我想转换此数组
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 =>数组(12 => array(),13 => array(16 => array())),5 => array(),10 => array(),14 =>阵列());
答案 0 :(得分:5)
foreach($ary as $k => $v)
$result[$k] = $v ? array_keys($v) : $k;
未测试
答案 1 :(得分:1)
<击>
function refactor($a){ $result = array(); foreach($a as $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($a); $b = refactor($a); print_r($b);
很抱歉,没有看到您希望内部数组不具有相同的键和值。
编辑:在您更新问题后,我编辑了我的功能以满足您的需求:
function refactor($a, $rootNode = false){ $result = array(); foreach($a as $k => $v){ if($rootNode){ $result[$k] = (is_array($v) && count($v) > 0) ? refactor($v) : $k; }else{ $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($a); $b = refactor($a, true); print_r($b);
答案 2 :(得分:0)
<?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) ;
?>