我需要一些帮助,即使我认为我正在检查数组的长度而且我应该突破循环,我仍然会在我的[else if($ value ....]行)上收到警告所以要么我缺少一些关键的东西,要么我一直盯着这个代码段太长而且很明显。任何见解都会受到赞赏。
$count = count($filter); //Filter is an array
if ($count > 1 ){
//Compare values and generate a range to choose from
$i = 1;
foreach($filter as $value){
//Break the loop if at the end of the array
if ($i >= $count){
//throw new exception($i .' '.$count);
break;
}
//if the value is smaller then the next procceding value, because they are already in order of presidence,
//add it to our range of potentials.
else if($value < $filter[$i]->value){
array_push($range, key($filter));
}
$i++;
}
}else {
return false;
}
答案 0 :(得分:1)
我怀疑你的阵列中存在空白。试试这个:
$filter = array_values($filter); // this will remove any gaps in the array
$count = count($filter);
if ($count <= 1)
return false;
for ($i = 0; $i < $count; $i++)
{
if ($i != $count-1 && $filter[$i]->value < $filter[$i+1]->value)
array_push($range, key($filter));
}
答案 1 :(得分:1)
您的数组可能包含非数字键。然后试试这个:
foreach($filter as $key=>$value)
{
// test for $filter[$key];
}
或者你的$ filter数组不包含对象,那么就不能使用
中的->
$filter[$key]->value
答案 2 :(得分:0)
尝试此代码....无需检查计数..
$range = array();
$i = 1;
foreach($filter as $value)
{
if(isset($filter[$i]) && $value < $filter[$i]->value)
{
array_push($range, key($filter));
$i++;
}
else
{
break;
}
}