Flattens array entries so that they can be parsed and/or read easily. I use this in CrossORM to make the permission definitions easy to read and write by users.
function flatten_array($array, $parents = '') { if ( !is_array($array) AND !is_object($array)) { return array($parents . $array); } $array = (array) $array; $flat = array(); foreach ($array AS $k => $v) { if (is_numeric($k)) { $k = ''; $p = $parents; } else { $p = $parents . $k . '.'; $flat[] = $parents . $k; } $flat = array_merge($flat,flatten_array($v,$p)); } return $flat; }
Sample usage:
Produces:
fruits fruits.a fruits.a.orange fruits.b fruits.b.banana fruits.c fruits.c.apple numbers numbers.1 numbers.2 numbers.3 numbers.4 numbers.5 numbers.6 holes holes.first holes.second holes.third