Я хочу преобразовать этот массив
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 ());
функция 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) ; ?>