为什么PHP在这里会抛出“Notice: Undefined offset”错误:
<?php
$MyVar = array();
echo $MyVar[0]; //Notice: Undefined offset: 0
?>
但不是在这里:
<?php
$MyVar = false;
echo $MyVar[0]; //No error
?>
这是因为在你的第二个例子中,$MyVar[0]
是 null,这不是一个错误。你可能会引用 $MyVar[0][1][2][3]
并得到相同的结果。
第一个例子不是 null,而是数组中缺少索引,所以它会警告你。
当数组中没有值并且您尝试引用未初始化的索引时,会提供未定义的偏移量。
在第二个代码的情况下,您已经为变量分配(初始化)了一个与variable [0]不同的值。
如果您为第一个示例中的前两个索引分配值,并引用第三个索引,则应该会出现未定义的偏移量错误。
我认为这不是关于null还是不是,而是关于为索引分配值的情况。如果您采用C语言,数组相当于malloc(在一定程度上)。感谢PHP不会崩溃,只会抛出未定义的索引[偏移量]错误
NULL
。同样的偏移量通知也适用于字符串$MyVar = ''; echo $MyVar[0];
这将导致未初始化的字符串偏移量: 0
。 - Will B.