我会试着解释一下。
我有一个数组
:
$arrayTime = array(0=>"07",1=>"09", 3=>"13", 4=>"15", 5=>"17", 6=>"19");
这里可以看到没有定义offset 2
现在我需要 for
我的 array
并在 offset 2
上推送数字 0(例如)
我试过用这个:
if($arrayTime[$i]==""){
$arrayTime[$i]=0;
}
是的,它可以工作,但是 50 到 50 个 array
看起来像这样:
$arrayTime = array(0=>"07",1=>"09", 3=>"13", 4=>"15", 5=>"17", 6=>"19",2=>"0");
但是在 if
所在的行会抛出一个错误:
Notice: Undefined offset: 2 in C:\wamp\www\xxx.php on line 10
所以我需要相同的结果,但没有错误。 感谢大家的帮助:)
最佳答案
首先,它不会抛出错误。它会向您发出有关代码中可能存在错误的警告。
if($arrayTime[$i]==""){}
这将尝试访问 $arrayTime[$i]
以检索一个值以与您的空字符串进行比较。
尝试读取和使用一个不存在的数组索引来获取比较值是它抛出警告的原因,因为这通常是出乎意料的。当 key 不存在时,将使用 null
并继续执行代码。
if(null == ""){} // this evaluates to true.
因为您要与空字符串 ""
进行比较,所以您的答案将是 empty()
:
if(empty($arrayTime[$i])){}
这意味着您期望键不存在,同时您正在检查值是否为空。查看type comparison table查看什么是“空”,什么不是“空”。
同样的规则适用于isset()
和is_null()
,如果key不存在则不会抛出通知。因此,请选择最能满足您需求的功能。
请记住,通过使用这些函数中的任何一个,您都是在检查值 并且不是key 是否存在于数组中。您可以使用 array_key_exists()
为此。
if(array_key_exists($i, $arrayTime)){}
关于php - 数组检查 undefined offset php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43036183/