我有一个多维数组,我需要将所有子值合并回其父级。
说我有这样的数组:
array(2) {
[XY] =>
array(3) {
[A]=> 20
[B]=> 30
[2]=>
array(2) {
[0]=> 1
[1]=> 2
}
}
[YZ] =>
array(3) {
[A]=> 60
[B]=> 50
[2]=>
array(2) {
[0]=> 3
[1]=> 4
}
}
}
我想要一个像这样的输出:
array(2) {
[XY] =>
array(4) {
[A]=> 20
[B]=> 30
[2]=> 1
[3]=> 2
}
[YZ] =>
array(4) {
[A]=> 60
[B]=> 50
[2]=> 3
[3]=> 4
}
}
我该怎么做?
答案 0 :(得分:0)
这是你的解决方案,它的工作是递归的,并将任何孩子交给元父(lvl 1 parent)注意:结束级别Childs给lvl 1 parent
function giveChildToParentLevel($array)
{
$countOfArray = count($array);
foreach($array as $key=>$value)
{
if(is_array($value))
{
$childitems = giveChildToParentLevel($value);
if(count($childitems) > 0 )
{
unset($array[$key]);
$i = 0;
foreach($childitems as $child)
{
if($i == 0)
$array[$key] = $child;
else
$array[$key.$i] = $child;
$i++;
}
}
}
}
return $array;
}
$array = //your array;
foreach($array as $key=>$value)
{
$array[$key] = giveChildToParentLevel($value);
}
print_r($array);
答案 1 :(得分:0)
此代码会将整个子array
合并到其主父数组中,您可以根据需要执行类似的操作。
foreach($allDataInarray as $key => $data) {
$array_keys = array_keys($data);
foreach($array_keys as $key_value) {
if(is_array($data[$key_value])) {
foreach($data[$key_value] as $sub_key => $sub_data) {
$allDataInarray[$key][$sub_key] = $sub_data;
}
unset($allDataInarray[$key][$key_value]);
}
}
}
注意:这是用于2D阵列。