数组转换成另一种格式(PHP) [英] Converting arrays into another format (PHP)
问题描述
我想这个数组转换
阵列
(
[2] =>排列
(
)
[4] =>排列
(
[12] =>排列
(
)
[13] =>排列
(
[16] =>排列
(
)
)
)
[5] =>排列
(
)
[10] =>排列
(
)
[14] =>排列
(
)
)
成这种格式
阵列
(
[2] => 2
[4] =>排列
(
[0] => 12
[13] =>排列
(
[0] => 16
)
) [5] =>五
[10] => 10
[14] => 14
)
任何人可以帮助?谢谢。
[继续16Mar2010]
它不是
[2] =>阵列
块引用>但
[2] => 2
块引用>如果它与1名儿童以上的阵列,那么这将是
[4] =>阵列([12] => 12
输入数据
$一个=阵列(2 =>阵列(),4 =>阵列(12
=>阵列(),13 =>阵列(16 =>阵列())),5 =>阵列(),10 =>
阵列(),14 =>阵列());
块引用>解决方案<击>
功能重构($ A){
$结果=阵列();
的foreach($ A $为K => $ V)
$导致[$ k]的=(is_array(ⅴ)及$;&放大器;计数($ⅴ)> 0)?重构($ V):$ K表;
返回$结果;
}$一个=阵列(2 =>阵列(),4 =>阵列(12 =>阵列(),13 =>阵列()),5 =>阵列(),10 =>阵列(),14 =>阵列());
的print_r($ A);
$ B =重构($ A);
的print_r($ B);击>
不好意思,没看到你想要的内部数组不具有键和值一样。
编辑:你更新你的问题后,我编辑功能,你需要什么:
功能重构($ A,$ rootNode中= FALSE){
$结果=阵列();
的foreach($ A $为K => $ V){
如果($ rootNode中){
$结果[$ K] =(is_array($ V)&&计数($ V)> 0)?重构($ V):$ K表;
}其他{
$结果[] =(is_array($ V)&&计数($ V)> 0)?重构($ V):$ K表;
}
}
返回$结果;
}$一个=阵列(2 =>阵列(),4 =>阵列(12 =>阵列(),13 =>阵列(16 =>阵列())),5 =>阵列(),10 =>阵列( ),14 =>阵列());
的print_r($ A);
$ B =重构($ A,真正的);
的print_r($ B);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]
its not
[2] =>array
but
[2] => 2
if it is an array with 1 child or more, then it would be
[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());
解决方案
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)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!