对布尔值的php数组访问

时间:2011-03-24 23:11:05

标签: php

我最近偶然发现了以下内容:

<? $d=false; var_dump($d[123]); ?>

产生了NULL,但是(我意外)没有任何通知,例如

<? $d=array(); var_dump($d[123]); ?>

确实产生众所周知的

Notice: Uninitialized string offset:  123 in - on line 1

这里发生了什么?有没有这种行为的文件?

3 个答案:

答案 0 :(得分:4)

来自here

  

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

答案 1 :(得分:1)

我想这就是你所谓的未定义行为。

这是有道理的,因为布尔值不能有偏移量。

error_reporting(E_ALL);
$d = TRUE; 
var_dump($d[0]);

这也会产生NULL(如果FALSE被强制转换为空字符串,那么TRUE将是1)是有意义的。

加上meze said:)

答案 2 :(得分:1)

快速查看the source code表明这是预期的行为。但不要问我他们为什么这样做......