为什么访问布尔值的数组索引不会引发任何类型的错误


Why does accessing array index on boolean value does not raise any kind of error?

当我试图通过不存在于该数组中的键访问数组时,php将引发"未定义索引"通知错误。当我尝试对字符串执行同样的操作时,会引发"非法字符串偏移量"警告。这是一种预期的行为,我知道如何应对

但当我在布尔值或整数值上尝试时,什么都没有发生:

ini_set('display_errors', 1);
error_reporting(E_ALL);
$var = false;
var_dump($var['test']);

我希望看到一些错误消息,但$var['test']只是无声地设置为NULL。

那么,为什么php允许通过数组键访问布尔值,而不指示您做错了什么呢?"通过数组键访问布尔值"这个短语对我来说听起来非常可怕,但你可以在php中做到这一点。

这很可悲,但它是有记录的行为。

https://www.php.net/manual/en/language.types.string.php

注意:
使用[]{}访问其他类型的变量(不包括实现适当接口的数组或对象)会无声地返回null