如果end($array)中的值包含倒数第二的内容


if value in end($array) contains something to to second last

我有一个包含多个元素的数组。我使用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'));