无论您是否找到缺失值,您都将循环执行到最后。$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 rangeprint_r($missing);// if you only want the first missing valueecho min($missing);输出:Array( [0] => 0 [4] => 4)0