我有一个包含多个元素的数组。我使用end($array)
来获取数组中的最后一个元素。但是,如果最后一个元素包含一个值,则它必须取倒数第二个元素。但是,如果倒数第二个元素也包含该值,则它必须转到下一个元素。我已经写了这个代码:
$g = end($array);
if($g != NULL && $g['MoreThanZero'] == true && $accountdata['bidding'] == 0) {
$v = end(array_pop($array));
} else {
$v = end($array);
}
在这个代码中,它将一直到倒数第二个元素。如何进行最后一次检查的"循环"。。倒数第二。。。。倒数第三。。。。倒数第四。。。。。。
使用一点foreach
,与array_reverse()
混合以使其工作:
$accountdata['bidding'] = 0;
$array = array(
array('Value' => 10, 'MoreThanZero' => true),
array('Value' => -10, 'MoreThanZero' => false),
array('Value' => 20, 'MoreThanZero' => true),
array('Value' => -30, 'MoreThanZero' => false),
array('Value' => 30, 'MoreThanZero' => true),
array('Value' => 40, 'MoreThanZero' => true),
array('Value' => 50, 'MoreThanZero' => true)
);
$v = null;
foreach(array_reverse($array) as $g) {
if($g != NULL && $g['MoreThanZero'] == true && $accountdata['bidding'] == 0)
continue;
$v = $g;
break;
}
var_dump($v);
您可以使用array_reverse()函数来更改元素的顺序,然后使用foreach()循环遍历数组。
$test = array('one','two','three','three');
function getLastElement($array = array(),$exclude=null){
$list = array_reverse($array);
foreach($list as $item){
if($item!=$exclude) return $item;
}
return null;
}
var_dump(getLastElement($test,'three'));