1. ホーム
  2. php

[解決済み] phpで文字列のオフセットを配列として使用できない

2022-02-14 20:16:47

質問

このエラーをサンプルPHPコードでシミュレートしようとしていますが、うまくいきません。何か手助けがあれば幸いです。

文字列のオフセットを配列として使用できません。

解決方法は?

PHP4の場合

...これでエラーが再現されました。

$foo    = 'bar';
$foo[0] = 'bar';

PHP5用

...これでエラーが再現されました。

$foo = 'bar';

if (is_array($foo['bar']))
    echo 'bar-array';
if (is_array($foo['bar']['foo']))
    echo 'bar-foo-array';
if (is_array($foo['bar']['foo']['bar']))
    echo 'bar-foo-bar-array';

(以下 bugs.php.net 実際に)

編集する

でエラーが表示されないのはなぜですか? であるにもかかわらず、最初のif条件 文字列を使用します。

PHPは非常に寛容なプログラミング言語だからでしょう。私が思うところをコードで説明します。

$foo = 'bar';
// $foo is now equal to "bar"

$foo['bar'] = 'foo';
// $foo['bar'] doesn't exists - use first index instead (0)
// $foo['bar'] is equal to using $foo[0]
// $foo['bar'] points to a character so the string "foo" won't fit
// $foo['bar'] will instead be set to the first index
// of the string/array "foo", i.e 'f'

echo $foo['bar'];
// output will be "f"

echo $foo;
// output will be "far"

echo $foo['bar']['bar'];
// $foo['bar'][0] is equal calling to $foo['bar']['bar']
// $foo['bar'] points to a character
// characters can not be represented as an array,
// so we cannot reach anything at position 0 of a character
// --> fatal error