您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

无法在PHP中将字符串偏移量用作数组

无法在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
php 2022/1/1 18:15:23 有666人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶