我正在尝试使用示例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)
编辑,
我猜想因为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
关于php - 无法在PHP中将字符串偏移量用作数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1873970/