多维数组中的和值

时间:2018-02-01 12:16:35

标签: php arrays multidimensional-array

我根本不知道如何对多维数组中的值进行求和和回显。这是我的数组,其中包含有关订单的信息。

我需要汇总 RESULT_VALUE 并回显一个统一的 DESCR 列表。我已经尝试了很多东西,但没有任何东西,从来没有使用过那种阵列级别。这是一个包含两种不同产品的阵列,具有应用折扣。

Array
(
    [0] => Array
        (
            [ORDER_ID] => 35
            [DISCOUNT_ID] => 18
            [ORDER_COUPON_ID] => 0
            [COUPON_ID] => 
            [RESULT] => Array
                (
                    [BASKET] => Array
                        (
                            [617] => Array
                                (
                                    [RULE_ID] => 248
                                    [APPLY] => Y
                                    [RULE_DESCR_ID] => 248
                                    [ACTION_BLOCK_LIST] => Array
                                        (
                                            [0] => 0
                                        )

                                    [DESCR_DATA] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [TYPE] => 2
                                                    [VALUE] => 10
                                                    [VALUE_TYPE] => P
                                                    [VALUE_ACTION] => D
                                                    [RESULT_VALUE] => 229.905
                                                    [RESULT_UNIT] => RUB
                                                )

                                        )

                                    [DESCR] => Array
                                        (
                                            [0] => discount 10% (229.91 rub.)
                                        )

                                    [DESCR_ID] => 248
                                    [BASKET_ID] => 617
                                    [MODULE] => catalog
                                    [PRODUCT_ID] => 10109
                                )

                            [618] => Array
                                (
                                    [RULE_ID] => 249
                                    [APPLY] => Y
                                    [RULE_DESCR_ID] => 249
                                    [ACTION_BLOCK_LIST] => Array
                                        (
                                            [0] => 0
                                        )

                                    [DESCR_DATA] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [TYPE] => 2
                                                    [VALUE] => 10
                                                    [VALUE_TYPE] => P
                                                    [VALUE_ACTION] => D
                                                    [RESULT_VALUE] => 70.796
                                                    [RESULT_UNIT] => RUB
                                                )

                                        )

                                    [DESCR] => Array
                                        (
                                            [0] => discount 10% (70.80 rub.)
                                        )

                                    [DESCR_ID] => 249
                                    [BASKET_ID] => 618
                                    [MODULE] => catalog
                                    [PRODUCT_ID] => 10054
                                )

                        )

                )

            [ACTION_BLOCK_LIST] => 1
        )

3 个答案:

答案 0 :(得分:0)

您可以使用array_sum和array_column。

Array_column从数组中的一列中获取所有值,并且array_sum ...总结它......

.ToArray

答案 1 :(得分:0)

Echo array_sum(array_column($array, 'RESULT_VALUE'));

此解决方案有效吗?

答案 2 :(得分:0)

您可以使用array_walk_recursive来获得结果。下面的代码汇总了密钥$ key的所有值,无论它们在数组中的哪个位置

$key = 'RESULT_VALUE';
$sum = 0;
array_walk_recursive ($array, 
         function($v, $k, $key) use (&$sum) { 
             if($k === $key) { $sum += $v;}}, 
         $key);

echo $sum;
相关问题