几天前我问question这个问题得到了很好的回答,但现在我已经实施了解决方案并遇到了一些问题。 (感谢Oleg获得这个目标)
我试图合并并总结以下数组:
Array
(
[Thursday] => Array
(
[Lunch] => Array
(
[Total] => 10
)
[Date] => 2015-12-31
)
)
Array
(
[Thursday] => Array
(
[Lunch] => Array
(
[Guarantees] => 231
)
[Date] => 2015-12-31
)
)
Array
(
[Friday] => Array
(
[Breakfast] => Array
(
[Total] => 1
)
[Date] => 2016-01-01
[Lunch] => Array
(
[Total] => 1
)
)
[Thursday] => Array
(
[Lunch] => Array
(
[Total] => 1
)
[Date] => 2015-12-31
)
)
我正在使用以下代码:
private function _merge( $arr1, $arr2, $arr3 )
{
$maxArraysCount = func_num_args();
$return = array();
for( $i = 1; $i < $maxArraysCount; $i++ ){
$arr = 'arr' . $i;
if( isset( $$arr ) && is_array( $$arr )){
foreach ( $$arr as $day => $value ) {
foreach ( $value as $meal => $time ) {
if( $meal == "Date"){
$return[$day][$meal] = $time;
} else {
foreach ( $time as $type => $count ) {
if( !isset( $return[$day][$meal][$type] ) )
$return[$day][$meal][$type] = 0;
$return[$day][$meal][$type] = $count + $return[$day][$meal][$type];
}
}
}
}
}
}
return $return;
}
它正在输出:
Array
(
[Thursday] => Array
(
[Lunch] => Array
(
[Total] => 11
)
[Date] => 2015-12-31
)
[Friday] => Array
(
[Breakfast] => Array
(
[Total] => 1
)
[Date] => 2016-01-01
[Lunch] => Array
(
[Total] => 1
)
)
)
此合并/求和数组中缺少信息。请注意,没有&#34;担保&#34;一点都不似乎arr1的优先级高于arr3?
答案 0 :(得分:0)
实际上问题非常简单,您需要将for更改为:
for( $i = 1; $i <= $maxArraysCount; $i++ ){
只需添加&lt; =而不是&lt;
这将使for循环通过1到3个数组作为参数传入,如果你只是做&lt;它会一直运行,直到$ i小于3,不等于3。