-// array('A' => array('B' => 'C')) to
-// array('A.B' => 'C')
-// array(
-// 'A' => array(
-// 'B' => array(
-// 'C' => array(
-// 'D' => '1'
-// ),
-// ),
-// ),
-// 'G' => array(
-// 'H' => '2'
-// ),
-// )
-// to
-// array (
-// 'G.H' => '2',
-// 'A.B.C.D' => '1',
-// )
-function array_shrinkbranch_leaves(& $array, $delim = '.', $reverse = FALSE, $recurse = FALSE)
-{
- $result = 0;
- if (! is_array($array) || empty($array)) return $result;
-
- foreach(array_keys($array) as $key) {
- $branch = & $array[$key];
- if (! is_array($branch) || empty($branch)) continue;
-
- foreach(array_keys($branch) as $bkey) {
- $joinkey = $reverse ?
- $bkey . $delim . $key :
- $key . $delim . $bkey;
- $array[$joinkey] = & $branch[$bkey];
- unset($array[$key]);
- ++$result;
- }
- }
-
- // Rescan (Recurse)
- if ($recurse && $result) {
- $result = array_shrinkbranch_leaves($array, $delim, $reverse, $recurse);
- }
-
- return $result; // Tell me how many
-}
-//$a = array (
-// 'edu' => array (
-// 'berkeley' => array (
-// 'polisci' => array (
-// '' => 'polisci.berkeley.edu',
-// ),
-// ),
-// 'cmich' => array (
-// 'rso' => array (
-// '' => 'rso.cmich.edu',
-// ),
-// ),
-// ),
-//);
-//array_shrinkbranch_leaves($a, '.', TRUE);
-//var_export($a);
-
-//$a = array (
-// '4' => array (
-// '5' => array (
-// '6' => array (
-// '' => '7.8.9',
-// ),
-// ),
-// ),
-//);
-//array_shrinkbranch_leaves($a, '.', TRUE);
-//var_export($a);
-
-
-