-1

我想知道为什么当我尝试获取非数组变量的索引时 PHP 不显示“通知”警报。这是我用来测试的代码:

echo ">>> Empty array\n";
$foo = array();
var_dump($foo['var']);

echo "\n>>> Boolean\n";
$foo = false;
var_dump($foo['var']);

echo "\n>>> Null\n";
$foo = null;
var_dump($foo['var']);

echo "\n>>> Int\n";
$foo = 1;
var_dump($foo['var']);

输出:

>>> Empty array
PHP Notice:  Undefined index: var in /var/www/test.php on line 3
NULL

>>> Boolean
NULL

>>> Null
NULL

>>> Int
NULL
4

1 回答 1

0

您正在尝试使用数组取消引用(访问数组的结果)。根据zend_fetch_dimension_address_read的实现,我们可以看到这仅针对三种类型实现:数组、字符串和对象。功能的默认设置是 PHP 只返回未定义的变量。

例如,如果你想在一个字符串上尝试同样的技巧,那么有一个数组取消引用的实现,所以你也会得到一个错误:

<?php
echo "\n>>> String\n";
$foo = "test";
var_dump($foo['var']);

将输出:

>>> String

Warning:  Illegal string offset 'var' on line 4
于 2019-01-16T20:49:14.330 回答