我有一个数组是这样的:具有可变数量参数的递归函数 - 如何传递左参数?
$months = Array (
"may" =>
Array (
"A" => 101,
"B" => 33,
"C" => 25
),
"june" =>
Array (
"A" => 73,
"B" => 11,
"D" => 32
),
"july" =>
Array (
"A" => 45,
"C" => 12
)
);
我希望得到一个这样的数组:
Array (['all'] =>
Array (
[A] => 219
[B] => 44
[C] => 37
[D] => 32
)
)
我写了一个函数有两个参数(两个数组加入)和它的工作,但我失败了,当我尝试使用2个以上的数组进行调用时。我试图通过递归做到这一点:
function array_merge_elements(){
$arg_list = func_get_args();
$array1 = $arg_list[0];
$array2 = $arg_list[1];
$keys = array_unique(array_merge(array_keys($array1), array_keys($array2)));
$result_array = array();
foreach($keys as $key) {
$result_array["$key"] = 0;
if(!empty($array1[$key])) {
$result_array["$key"] += $array1[$key];
}
if(!empty($array2[$key])) {
$result_array["$key"] += $array2[$key];
}
}
if(func_num_args() == 2) {
return $result_array;
} else {
unset($arg_list[0]);
unset($arg_list[1]);
return array_merge_elements($result_array, $arg_list);
}
}
这个问题似乎是,这与调用该函数(数组1,arglist中)是不一样的调用与(数组1,数组2,ARRAY3)等
功能
你为什么不能声明功能'array_merge_elements一组阵列($数组1,$数组2)'? – k102
我可以,但我想能够说array_merge_elements($ array1,$ array2,$ array3)以及。 – Riesling