说我有以下数组:1,2,3,6,8
我需要找到下一个缺失的数字是4
执行此操作的最简单,最快捷的方式是什么?
答案 0 :(得分:6)
$missing = array_diff(range(min($myArray), max($myArray)), $myArray);
$nextMissing = (!empty($missing)) ? array_shift($missing) : max($myArray) + 1;
答案 1 :(得分:0)
迭代数组并检查in_array()
应该这样做。
$missing = null;
for ($i = 1; $i <= 10; $i++) {
if (!in_array($i, $myArray)) {
$missing = $i;
break;
}
}
if (!is_null($missing)) {
// hit
}
答案 2 :(得分:0)
问题的措辞很差,但根据我的理解,你有1,2,3
然后你需要检查下一个值应该是4
$prev = array[0];
for($i = 1; $i < count(array); $i++){
if(array[$i] != prev+1) return (prev+1)
}
答案 3 :(得分:0)
我会这样做(如果数组已排序):
$array = array(1, 2, 3, 6, 8);
$size = count($array);
$missing = 0;
$firstval = $array[0];
for ($i = 0; $i < $size; ++$i) {
if ($firstval++ != $array[$i]) {
$missing = $firstval - 1;
break;
}
}
if ($missing != 0) echo $missing.' is missing'.PHP_EOL;
给出了:
4 is missing