[英]Converting arrays into another format (PHP)
i want to convert this array 我想转换这个数组
Array
(
[2] => Array
(
)
[4] => Array
(
[12] => Array
(
)
[13] => Array
(
[16] => Array
(
)
)
)
[5] => Array
(
)
[10] => Array
(
)
[14] => Array
(
)
)
into this format 变成这种格式
Array
(
[2] => 2
[4] => Array
(
[0] => 12
[13] => Array
(
[0] => 16
)
)
[5] => 5
[10] => 10
[14] => 14
)
can anybody help? 有人可以帮忙吗? thanks.
谢谢。 [continued 16Mar2010]
[2010年3月16日续]
its not 不是
[2] =>array
[2] =>数组
but 但
[2] => 2
[2] => 2
if it is an array with 1 child or more, then it would be [4] => Array([12]=>12
如果它是一个有1个或更多子代的数组,则它将是
[4] => Array([12]=>12
input data is 输入数据为
$a = array(2 => array(), 4 => array(12 => array(), 13 => array(16 => array())), 5 => array(), 10 => array(), 14 => array());
$ 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;
untested 未经测试
\n
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);
Sorry, didn't see that you wanted the internal array not to have the keys and values as the same. 抱歉,没有看到您希望内部数组的键和值不相同。
EDIT: After you updated your question, I edited my function to do what you need: 编辑:更新您的问题后,我编辑了我的功能以执行您需要的操作:
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);
<?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) ;
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.