我会试着解释一下.
我有一个数组:
$arrayTime = array(0=>"07",1=>"09",3=>"13",4=>"15",5=>"17",6=>"19");
在这里你可以看到没有定义偏移量2
现在我需要我的数组和偏移2推数0(例如)
我试过用这个:
if($arrayTime[$i]==""){ $arrayTime[$i]=0; }
是的它有效,但50到50阵列看起来像这样:
$arrayTime = array(0=>"07",6=>"19",2=>"0");
但是在哪一行是if它抛出一个错误:
Notice: Undefined offset: 2 in C:\wamp\www\xxx.PHP on line 10
所以我需要相同的结果,但没有错误.
谢谢你们的帮助:)
首先,它不会抛出错误.它会为您提供有关代码中可能存在的错误的警告.
if($arrayTime[$i]==""){}
这会尝试访问$arrayTime [$i]来检索要与空字符串进行比较的值.
尝试读取和使用不存在的数组索引来获取比较值是它抛出警告的原因,因为这通常是意外的.当密钥不存在时,使用null代替,代码继续执行.
if(null == ""){} // never true.
因为您要与空字符串“”进行比较,所以您的答案将为空():
if(empty($arrayTime[$i])){}
这意味着您期望一个密钥不存在,同时您正在检查空值.请参阅type comparison table以查看什么是什么以及什么不被认为是“空的”.
相同的规则适用于isset()和is_null(),如果密钥不存在,它不会抛出通知.因此,选择最能满足您需求的功能.
请记住,通过使用这些函数中的任何一个,您将检查值,而不是数组中是否存在该键.您可以使用array_key_exists()
.
if(array_key_exists($i,$arrayTime)){}