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

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

提问人:Samel Vhatargh 提问时间:9/9/2014 更新时间:3/27/2023 访问量:2404

问:

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

但是当我在布尔值或整数值上尝试这样做时,没有任何反应:

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

$var = false;
var_dump($var['test']);

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

那么,为什么 php 允许通过数组键访问布尔值,而没有任何迹象表明您做错了什么呢? “通过数组键访问布尔值”这句话对我来说听起来很奇怪,但你可以在 php 中做到这一点。

PHP 数组 boolean undefined-index

评论


答:

17赞 sectus 9/9/2014 #1

这很可悲,但这是有据可查的行为。

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

注意:
使用或静默访问其他类型的变量(不包括实现相应接口的数组或对象)将返回 null
[]{}

评论

2赞 Jānis Elmeris 3/7/2019
这记录在字符串类型文档下... :)
1赞 ingdc 8/10/2019
有趣的是,同样的事情发生在 javascript 中,例如 true[3] => undefined