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

Php 查找数组中的下一个最高值,php,Php,我将一个字符串转换为一个1到7个值的数组,例如3、1234567、1234357、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;

我将一个字符串转换为一个1到7个值的数组,例如3、1234567、1234357、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,且day为3,则它也不会返回应为4的正确值

在所有情况下,我需要做些什么才能使上述返回正确的值

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

$value = $values ? array_shift($values) : array_shift($arr);
可能不是最优的,也没有经过测试,但它应该可以工作