我会尝试解释它。
我有array
:
$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
所在的行上会抛出错误:
注意:未定义的偏移量:第10行的C:\ wamp \ www \ xxx.php中的2
所以我需要相同的结果,但没有错误。 感谢您的帮助:)
答案 0 :(得分:19)
首先,它不会抛出错误。它会警告您代码中可能存在错误。
if($arrayTime[$i]==""){}
尝试访问 $arrayTime[$i]
以检索要与空字符串进行比较的值。
尝试读取 和 使用 不存在的数组索引来获取比较值是它之所以抛出警告,是因为这通常是意料之外的。当密钥不存在时,使用null
代替,代码继续执行。
if(null == ""){} // this evaluates to true.
因为您要与空字符串""
进行比较,所以答案为empty()
:
if(empty($arrayTime[$i])){}
这意味着您希望密钥不存在,同时您正在检查值是否为空。请参阅type comparison table,了解未考虑的内容和内容,以及#39;空白'。
相同的规则适用于isset()
和is_null()
,如果密钥不存在,它不会抛出通知。因此,选择最能满足您需求的功能。
请注意,如果数组中存在键,则使用这些功能中的任何一项都会检查值和不。您可以使用array_key_exists()
。
if(array_key_exists($i, $arrayTime)){}
答案 1 :(得分:0)
在未获取通知的情况下将零添加到未定义的索引中您应该评估是否存在要比较的所需索引,因此请先使用isset方法直接尝试检查索引是否存在,然后检查如果变量已定义且不是NULL。
因此,您要验证的代码应如下所示:
//check for the index before tryin' to acces it
if( !isset($arrayTime[$i]) ){
$arrayTime[$i]=0;
}
希望它适合你。