我有一个循环遍历多维数组的函数:
function in_multiarray($elem, $array, $field)
{
$top = sizeof($array) - 1;
$bottom = 0;
while($bottom <= $top)
{
if($array[$bottom][$field] == $elem)
return true;
else
if(is_array($array[$bottom][$field]))
if(in_multiarray($elem, ($array[$bottom][$field])))
return true;
$bottom++;
}
return false;
}
然后,我这样使用它:
$hoursoff = array( array("10:00" => "2016-10-07", "11:00" => "2016-10-07", "12:00" => "2016-10-07"), array("10:00" => "2016-10-08", "11:00" => "2016-10-08") );
if( in_multiarray("$date", $hoursoff, "$hour") ) { /* do it */ } else { /* don't do it */ }
/* $date and $hour come from database request */
这很好用。但是当我检查我的error_reporting(E_ALL)时;它抛出
Notice: Undefined index ...
我知道这没什么大不了的,并且不会影响结果,但为了从中学习: *脚本的哪一部分涉及此错误? *我如何避免这种情况(或者我做错了什么)? 感谢
答案 0 :(得分:0)
使用for循环而不是while循环,因为您可以首先使用数组的索引
然后,您要检查$date
是否存在,您的数组中没有密钥,而以$
开头的密钥不是正确的索引;你的第二维指数是&#34; 10:00&#34; ,&#34; 11:00&#34;而不是date
或hour
答案 1 :(得分:0)
我还会在所有isset($array[$bottom])
语句中测试isset($array[$bottom][$field])
和if
。
答案 2 :(得分:0)
如果您的多维数组对于每个元素都没有相同的结构,那么您可能需要添加一些isset()
函数来测试是否存在具有关联键的数组,然后再对其进行测试if()
声明。