如果每个后续值大于最后一个值,如何检查数组

时间:2015-09-07 23:11:32

标签: php

我试图找到一种方法来验证php数组中的某些数字,检查每个值是否大于最后一个值。

以下是一个例子:

$number['num1']=1;
$number['num2']=2;
$number['num3']=3;
$number['num4']=4;

if($number['num1'] > $number['num2'] || $number['num1'] > $number['num3'] || 
$number['num1'] > $number['num4']){

//Some error
}

i can manually check each but is there an easier way, any suggestions?

2 个答案:

答案 0 :(得分:4)

您可以通过简单的循环并使用PHP数组指针函数nextcurrent轻松实现此目的:

$array = [1,2,3,4];
$isValid = true;
$current = current($array);
while($next = next($array)) {
    if($next <= $current) {
        $isValid = false;
        break;
    }
    $current = $next;
}

var_dump($isValid);

示例:http://ideone.com/3uHPMq

答案 1 :(得分:2)

Scopey打败了我,但这就是我所做的:

$number['nums'][4] = 4;
$number['nums'][2] = 2;
$number['nums'][1] = 600;
$number['nums'][3] = 3;
// Note, I rearranged the order above just to make sure it 
// works no matter what order the values get put in

function isAscending($arr) {
    ksort($arr);

    for ($i=0; $i<count($arr); $i++) {
        if (isset($arr[$i-1])) {
            if ($arr[$i-1] > $arr[$i]) {
                return false;
            }
        }
    }
    return true;
}

var_dump(isAscending($number['nums'])); // false