0

我将字符串转换为具有 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 并且 day 是3 它再次没有返回应该是 4 的正确值。

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

4

1 回答 1

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

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

可能不是最佳的和未经测试的,但它应该可以工作。

于 2013-10-18T03:34:30.010 回答