$var=array(1,5,6,7,11,2,.......,45,100);
在上面的数组中,总数是 99(从 1 到 100 但缺少 no.在 1 到 100 之间)。
我想找到那个缺失的不。
你可以
试试array_diff
<?php
for ($ii = 0; $ii < 100; $ii++)
$completeArray[] = $ii;
$arrayPart = array(1,3,5,7,9,11,13);
$missing = array_diff($completeArray, $arrayPart);
var_dump($missing);
我会生成一个包含所有元素的数组,然后使用 array_diff()
得到 2 个数组之间的差异。
一个简单的例子:
$all = range(1,100);
$missing = array_reverse($all); // to show that order / keys don't matter
unset($missing[41]); // remove 1 item
var_dump(array_diff($all, $missing));
结果在:
array(1) {
[58]=>
int(59)
}
因此,在您的情况下,您所需要的只是:
array_diff(range(1, 100), $var)
尝试
- 对数组进行排序。 使用 for 循环,检查 (a[i] != a[i-1]
- + 1),则 (a[i] - 1) 是缺失的数字。