Преобразование массивов в другой формат (PHP)

Я хочу преобразовать этот массив

Array ( [2] => Array ( ) [4] => Array ( [12] => Array ( ) [13] => Array ( [16] => Array ( ) ) ) [5] => Array ( ) [10] => Array ( ) [14] => Array ( ) ) 

в этот формат

 Array ( [2] => 2 [4] => Array ( [0] => 12 [13] => Array ( [0] => 16 ) ) [5] => 5 [10] => 10 [14] => 14 ) 

может кто-нибудь помочь? Благодарю. [продолжение 16Mar2010]

это не

[2] => массив

но

[2] => 2

если это массив с 1 ребенком или более, то это будет [4] => Array([12]=>12

входные данные

$ a = array (2 => array (), 4 => array (12 => array (), 13 => array (16 => array ())), 5 => array (), 10 => array ( ), 14 => array ());

Solutions Collecting From Web of "Преобразование массивов в другой формат (PHP)"

 функция refactor ($ a) {
   $ result = array ();
   foreach ($ a как $ k => $ v)
     $ result [$ k] = (is_array ($ v) && count ($ v)> 0)?  refactor ($ v): $ k;
   return $ result;
 } 

$ a = array (2 => array (), 4 => array (12 => array (), 13 => array ()), 5 => array (), 10 => array (), 14 => array ());
print_r ($ а);
$ b = рефакторинг ($ a);
print_r ($ б);

Извините, не заметил, что вы хотите, чтобы внутренний массив не имел ключей и значений как то же самое.

EDIT: после того, как вы обновили свой вопрос, я отредактировал свою функцию, чтобы сделать то, что вам нужно:

 function refactor ($ a, $ rootNode = false) {
   $ result = array ();
   foreach ($ a как $ k => $ v) {
       если ($ RootNode) {
           $ result [$ k] = (is_array ($ v) && count ($ v)> 0)?  refactor ($ v): $ k;
       } Еще {
           $ result [] = (is_array ($ v) && count ($ v)> 0)?  refactor ($ v): $ k;      
       }
   }
   return $ result;
 }

 $ a = array (2 => array (), 4 => array (12 => array (), 13 => array (16 => array ())), 5 => array (), 10 => array ( ), 14 => array ());
 print_r ($ а);
 $ b = рефакторинг ($ a, true);
 print_r ($ б);
 foreach($ary as $k => $v) $result[$k] = $v ? array_keys($v) : $k; 

непроверенной

 <?php $arr = array ( "2" => array ( ) , "4" => array ( "12" => array () , 13 => array () , ) , 5 => array () , 10=> array () , 14 => array() ); foreach ( $arr as $key => $val ) { global $arr ; if ( empty ( $val ) ) { unset($arr[$key]); $arr[$key]=$key; } } print_r ( $arr) ; ?> с <?php $arr = array ( "2" => array ( ) , "4" => array ( "12" => array () , 13 => array () , ) , 5 => array () , 10=> array () , 14 => array() ); foreach ( $arr as $key => $val ) { global $arr ; if ( empty ( $val ) ) { unset($arr[$key]); $arr[$key]=$key; } } print_r ( $arr) ; ?>