在PHP中合并和求和多个多维数组
几天前我问了一个问题,得到了很好的回答,但现在我已经实现了解决方案,并面临一些问题。(感谢你走了这么远) 我正在尝试合并和求和以下数组:在PHP中合并和求和多个多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,几天前我问了一个问题,得到了很好的回答,但现在我已经实现了解决方案,并面临一些问题。(感谢你走了这么远) 我正在尝试合并和求和以下数组: Array ( [Thursday] => Array ( [Lunch] => Array ( [Total] => 10 ) [Date] => 2015-
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;
}
此合并/求和数组中缺少信息。请注意,根本没有“保证”。似乎arr1的优先级高于arr3?问题其实很简单,您需要将for更改为:
for( $i = 1; $i <= $maxArraysCount; $i++ ){
用于($i=1;$i为什么不使用对象数组呢?我的意思是每天定义一个对象。我认为使用不同结构的数组元素不是一个很好的主意。合并这些数组有什么意义?也许,我不太熟悉这样做的好处。这两个单独的查询已被重新构造以在TW中使用IG模板。用MySQL合并这两个查询是不实际的,所以我用PHP来做。也许它是实用的:)。你能给出你正在从中进行查询的表吗?该查询是一个非常高级的查询,我认为远远超出了这个问题的范围!如果这个问题没有实际的解决方案,我将从这个方向解决它…我认为一种方法是为数组定义一种格式,然后更容易地合并它们。我的意思是:array(‘一周中的第几天’=>,‘日期’=>,‘早餐’=>,‘午餐’=>,‘晚餐’=>)这在您的软件逻辑中可能吗??
for( $i = 1; $i <= $maxArraysCount; $i++ ){