php再帰連結多次元配列
1694 ワード
/*
* A,B C
* A,B
* key A,B , value , A
* key A,B , value ,
*/
$a = array(
"1" => array(
"1" => "a11",
"2" => array(
"1" => "a121",
"2" => "a122",
),
),
"2" => array(
"1" => "b21",
"2" => "b22",
),
"5" => 'e1',
);
$b = array(
"1" => array(
"1" => "a11",
"2" => array(
"1" => "a121",
"2" => "a122",
"3" => "a123",
),
"3" => "a13"
),
"2" => array(
"1" => "b21",
"2" => "b22",
"3" => "b23",
),
"3" => array(
"1" => "c31",
"2" => "c32",
"3" => "c33",
),
"4" => array(
"1" => "d41",
"2" => "d42",
"3" => "d43",
),
"5" => 'e2',
"6" => array(
"1" => "f61",
"2" => "f62",
),
);
function my_merge(&$a,$b){
foreach($a as $key=>&$val){
if(is_array($val) && array_key_exists($key, $b) && is_array($b[$key])){
my_merge($val,$b[$key]);
$val = $val + $b[$key];
}else if(is_array($val) || (array_key_exists($key, $b) && is_array($b[$key]))){
$val = is_array($val)?$val:$b[$key];
}
}
$a = $a + $b;
}
my_merge($a, $b);
echo '';print_r($a);
exit;