【发布时间】:2023-04-01 22:01:01
【问题描述】:
为什么 PHP 会在此处抛出“Notice: Undefined offset”错误:
<?php
$MyVar = array();
echo $MyVar[0]; //Notice: Undefined offset: 0
?>
但不在这里:
<?php
$MyVar = false;
echo $MyVar[0]; //No error
?>
【问题讨论】:
-
这是由于变量类型。由于数组有偏移量,但布尔值没有,所以偏移量不是未定义的,而是简单的
NULL。相同的偏移量通知适用于字符串$MyVar = ''; echo $MyVar[0];,这将导致Uninitialized string offset: 0 -
@fyrye 我试图引用布尔值的偏移量应该是引发错误/警告/通知的更多原因
-
参见:php.net/manual/en/language.types.string.php#example-55
Accessing variables of other types (not including arrays or objects implementing the appropriate interfaces) using [] or {} silently returns NULL.这意味着 PHP 希望您在使用[]或{}访问它之前验证变量类型,例如if (is_array($MyVar)) -
@fyrye 将其放入答案中,我会将其标记为已接受
标签: php arrays undefined offset