我试图在数组中找到缺失的东西。使用此代码<?php $no = array(1,2,3,5,6,7); $max=max($no); for($x=0; $x<=$max; $x++){ if(!in_array($x,$no)){ $id = $x; }else{ $id = $x+1; } } echo '<pre>'; print_r($id);?>但结果是8有人可以帮助我吗?
1 回答
慕后森
TA贡献1802条经验 获得超5个赞
无论您是否找到缺失值,您都将循环执行到最后。$id将永远如此$max+1。当您找到缺失值时,您需要跳出循环(或者如果您想要所有缺失值,请将缺失值推送到数组中)。array_diff但是,可以使用range从 0 到 中的最大值更简单地实现代码$no:
$no = array(1,2,3,5,6,7);
$max = max($no);
// you may want to use min($no) here
$min = 0;
$missing = array_diff(range($min, $max), $no);
// print all missing values in the range
print_r($missing);
// if you only want the first missing value
echo min($missing);
输出:
Array
(
[0] => 0
[4] => 4
)
0
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消