php获取数组最大的连续数字

废话不多说, 直接上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
* 获取数组最大连续数字
*
* @param array $arr 一维数字数组
* @param boolean $asort 是否从小到大排序
* @return void
*/
function array_max_continuity_number(array $arr, bool $sort = true) {
if (!in_array(0, $arr)) {
array_unshift($arr, 0); // 从0开始, 避免1被忽略
}

$arr = array_unique($arr);
if ($sort) {
sort($arr);
}

$i = 0;
do {
$cur = $arr[$i];
$i++;
} while (count($arr) > $i && $cur+1 == $arr[$i]);

return $cur;
}


$arr1 = [1,2,3,4,5,6,7,90];
var_dump(array_max_continuity_number($arr1));
// int(7)

$arr1 = [1,2,3,4];
var_dump(array_max_continuity_number($arr1));
// int(4)

do...while这个语法可能很多人没用过, 他是循环方法, 先循环一次, 再判断, 如果为true就继续循环, false就终止

下面演示一个死循环

1
2
3
do {
echo 1;
} while(true); // 没有终止条件了, 为true一直循环下去

还有while, 先判断再循环

1
2
3
while(true) {
echo 1;
}