我正在尝试使用示例php代码模拟此错误,但尚未成功。任何帮助都会很棒。
“不能将字符串偏移量用作数组”
…这重现了错误:
$foo = 'bar'; $foo[0] = 'bar';
$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