在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++ ){