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

Php 为什么访问布尔值上的数组索引不会引发任何类型的错误?,php,arrays,boolean,undefined-index,Php,Arrays,Boolean,Undefined Index,当我试图通过键访问这个数组中不存在的数组时,php将引发“undefined index”错误通知。当我尝试对字符串执行相同操作时,会引发“非法字符串偏移”警告。这是一种预期的行为,我知道如何应对 但当我在布尔值或整数值上尝试此操作时,什么都没有发生: ini_set('display_errors', 1); error_reporting(E_ALL); $var = false; var_dump($var['test']); 我希望看到一些错误消息,但是$var['test']只是默

当我试图通过键访问这个数组中不存在的数组时,php将引发“undefined index”错误通知。当我尝试对字符串执行相同操作时,会引发“非法字符串偏移”警告。这是一种预期的行为,我知道如何应对

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

ini_set('display_errors', 1);
error_reporting(E_ALL);

$var = false;
var_dump($var['test']);
我希望看到一些错误消息,但是
$var['test']
只是默默地设置为NULL

那么,为什么php允许通过数组键访问布尔值,而不显示您做错了什么呢?
“通过数组键访问布尔值”这句话听起来非常奇怪,但你可以用php来实现。

这很遗憾,但它是有文档记录的行为

注:

使用[]或{}访问其他类型的变量(不包括实现适当接口的数组或对象)时,会静默返回NULL


您想要哪条错误消息?@Dagon我希望有一个“未定义的索引”。我喜欢哪种错误其实并不重要。我只是想知道为什么根本没有错误消息这也发生在整数上,并记录在字符串类型文档中…:)有趣的是,同样的事情也发生在javascript中,例如true[3]=>未定义