提问人:Samel Vhatargh 提问时间:9/9/2014 更新时间:3/27/2023 访问量:2404
为什么访问布尔值的数组索引不会引发任何类型的错误?
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']);
我希望看到一些错误消息,但只是静默设置为 NULL。$var['test']
那么,为什么 php 允许通过数组键访问布尔值,而没有任何迹象表明您做错了什么呢? “通过数组键访问布尔值”这句话对我来说听起来很奇怪,但你可以在 php 中做到这一点。
答:
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
评论