查找数组中的下一个最高值

时间:2013-10-18 03:26:16

标签: php

我有一个字符串转换为1到7个值的数组,例如3,1234567,1234,357,46等

给定1到7之间的任何数字,如何找到数组中的下一个值?

$str=12345;
$arr=str_split($str);

$end=end($arr);

if ($day==$end) {
    $next=reset($arr);
} else {
    $loc=array_search($day, $arr)+1;
    $next=$arr[$loc];
}

print $next;

如果day为1,则上面返回2并且如果day为5则返回1两者都是正确的但是如果day是6或7那么它不会返回正确的值,该值应该是1 - 同样如果数组是1245而且它是3,它再次没有返回正确的值,应该是4。

如果要使上述内容在所有情况下都返回正确的值,我需要做什么?

1 个答案:

答案 0 :(得分:0)

$values = array_filter($arr, function($v) use($day) {
    return $v > $day;
});

$value = $values ? array_shift($values) : array_shift($arr);

可能不是最佳和未经测试但它应该有效。