Revision: 3889
Updated Code
at September 29, 2007 12:26 by micmath
Updated Code
// a sparse array has non consecutive integers for the indexes, $array = array(7=>'foo', 19=>'bar'; $array[] = 'baz'; // note that count($array) will return 3 here, not much use foreach($array as $i => $el) { if(is_int($i)) { // in case this array has mixed keys echo $el; } } // if you want to de-sparse the array before you walk it, do this function array_desparse(&$array, $filler=NULL) { $max = -1; for (end($array); $key = key($array); prev($array)) { if (is_int($key) and $key > $max) { $max = $key; } } for ($i = 0; $i <= $max; $i++) { if (!array_key_exists($i, $array)) { $array[$i] = $filler; } } ksort($array); }
Revision: 3888
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at September 29, 2007 11:58 by micmath
Initial Code
// a sparse array has non consecutive numbers for the indexes, like so... $array = array(7=>'foo', 19=>'bar', favourite_icecream=>'chocolate'); $array[] = 'baz'; // for won't work here, and plain foreach returns too much foreach($array as $i => $el) { if(is_int($i)) { echo $el; } }
Initial URL
Initial Description
This snippet assumes you want to walk the numbered array items only, as you would with a normal for loop, but a for loop up to count($array) won't work with a sparse array because the highest array index will always be higher than the array count.
Initial Title
Dealing with sparse arrays
Initial Tags
Initial Language
PHP