我想转换这个数组
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
)
有人可以帮忙吗?谢谢。 [2010 年 3 月 16 日续]
不是
[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()
);
foreach($ary as $k => $v)
$result[$k] = $v ? array_keys($v) : $k;
未经测试
函数重构($a){ $结果=数组(); foreach($a 为 $k => $v) $结果[$k] = (is_array($v) && 计数($v) > 0) ?重构($v):$k; 返回$结果; }$a = 数组(2 => 数组(), 4 => 数组(12 => 数组(), 13 => 数组()), 5 => 数组(), 10 => 数组(), 14 =>大批()); 打印_r($a); $b = 重构($a); print_r($b);
抱歉,没有看到您希望内部数组的键和值不相同。
编辑:在您更新问题后,我编辑了我的函数来执行您需要的操作:
函数重构($a, $rootNode = false){ $结果=数组(); foreach($a 为 $k => $v){ if($rootNode){ $结果[$k] = (is_array($v) && 计数($v) > 0) ?重构($v):$k; }别的{ $结果[] = (is_array($v) && 计数($v) > 0) ?重构($v):$k; } } 返回$结果; } $a = 数组(2 => 数组(), 4 => 数组(12 => 数组(), 13 => 数组(16 => 数组())), 5 => 数组(), 10 => 数组( ), 14 => 数组()); 打印_r($a); $b = 重构($a, true); print_r($b);
<?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) ;
?>