I'm trying to find each missing number in an array like the following.
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 [10] => 11 [11] => 12 [12] => 13 [13] => 14 [14] => 15 [15] => 16 [16] => 17 [17] => 18 [18] => 19 [19] => 20 [20] => 21 [21] => 22 [22] => 23 [23] => 24 [24] => 25 [25] => 26 [26] => 27 [27] => 28 [28] => 29 [29] => 30 [30] => 31 [31] => 32 [32] => 33 [33] => 34 [34] => 35 [35] => 36 [36] => 37 [37] => 38 [38] => 39 [39] => 40 [40] => 41 [41] => 42 [42] => 43 [43] => 44 [44] => 45 [45] => 46 [46] => 47 [47] => 48 [48] => 49 [49] => 50 [50] => 51 [51] => 52 [52] => 53 [53] => 54 [54] => 55 [55] => 56 [56] => 57 [57] => 58 [58] => 59 [59] => 60 [60] => 61 [61] => 62 [62] => 63 [63] => 64 [64] => 67 [65] => 68 [66] => 69 )
The numbers 65
,66
are missing in this particular array.
My question how do I figure out which numbers are missing with the help of PHP. Specifically what I need to find out is the lowest missing number.
Why: Because then I can assign that number to a member as an id.
PHP Code :function missing_number($num_list) { // construct a new array $new_arr = range($num_list[0],max($num_list)); // use array_diff to find the missing elements return array_diff($new_arr, $num_list); } print_r(missing_number(array(1,2,3,6,7,8))); print_r(missing_number(array(10,11,12,14,15,16,17))); ?>
You can make use of array_diff
and range
functions as:
// given array. 3 and 6 are missing. $arr1 = array(1,2,4,5,7); // construct a new array:1,2....max(given array). $arr2 = range(1,max($arr1)); // use array_diff to get the missing elements $missing = array_diff($arr2,$arr1); // (3,6)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With