PHP数组索引除了 - 不同层次 [英] PHP Array index addition - different levels

查看:131
本文介绍了PHP数组索引除了 - 不同层次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2个数组如下: -

  $ m_aggregate =阵列(
             加权=>阵列(40000,
                   30000,
                   90000,
                   0),
      '加权'=>阵列(3000,
                     2000年,
                     6000,
                     0),
      weighted_sum'=> 160000,
      unweighted_sum'=> 11000
     );$ f_aggregate =阵列(
             加权=>阵列(7000,
                           5000,
                           9000,
                           0),
      '加权'=>阵列(500,
                            300,
                            600,
                            0),
      weighted_sum'=> 21000,
      unweighted_sum'=> 1400
     );

和希望,总结了各个元素,所以我得到

  $ tot_aggregate =阵列(
             加权=>阵列(47000,
                          35000,
                      99000,
                  0),
      '加权'=>阵列(3500,
                            2300,
                6600,
                0),
      weighted_sum'=> 181000,
      unweighted_sum'=> 12400
     );

我试过用

 函数sum($ ARR1,$ ARR2)
{
    回报($ ARR1 + $ ARR2);
}$ tot_aggregate = array_map(求和,$ m_aggregate,$ f_aggregate);的print_r($ tot_aggregate);

但是这给了我在阵列内weighted_sum和unweighted_sum,而不是加权和不加权阵列总结。

谁能帮助?
TIA


解决方案

 函数sum($ ARR1,$ ARR2)
{
    返回is_array($ ARR1)及&放大器; is_array($ ARR2)
           ? array_map(求和,$ ARR1,$ ARR2)
           ($ ARR1 + $ ARR2);}$ tot_aggregate = SUM($ m_aggregate,$ f_aggregate);的print_r($ tot_aggregate);

输出:

 阵列

    [0] =>排列
        (
            [0] => 47000
            [1] => 35000
            [2] => 99000
            [3] => 0
        )    [1] =>排列
        (
            [0] => 3500
            [1] => 2300
            [2] => 6600
            [3] => 0
        )    [2] => 181000
    [3] => 12400

I have 2 arrays as follows :-

$m_aggregate = array(
             'weighted' => array (40000,
                   30000,
                   90000,
                   0),
      'unweighted' => array (3000,
                     2000,
                     6000,
                     0),
      'weighted_sum' => 160000,
      'unweighted_sum' => 11000
     );

$f_aggregate = array(
             'weighted' => array (7000,
                           5000,
                           9000,
                           0),
      'unweighted' => array (500,
                            300,
                            600,
                            0),
      'weighted_sum' => 21000,
      'unweighted_sum' => 1400
     );

and wish to sum the individual elements so I get

$tot_aggregate = array(
             'weighted' => array (47000,
                          35000,
                      99000,
                  0),
      'unweighted' => array (3500,
                            2300,
                6600,
                0),
      'weighted_sum' => 181000,
      'unweighted_sum' => 12400
     );

I've tried using

function sum($arr1, $arr2)
{
    return($arr1+$arr2);
}

$tot_aggregate = array_map("sum", $m_aggregate, $f_aggregate);

print_r($tot_aggregate);

but this gives me weighted_sum and unweighted_sum , but not the weighted and unweighted arrays within the array summed.

Can anyone help? tia Jas

解决方案

function sum($arr1, $arr2)
{
    return is_array( $arr1) && is_array( $arr2)  
           ? array_map("sum", $arr1, $arr2) 
           : ($arr1 + $arr2); 

}

$tot_aggregate = sum($m_aggregate, $f_aggregate);

print_r($tot_aggregate);

Output :

Array
(
    [0] => Array
        (
            [0] => 47000
            [1] => 35000
            [2] => 99000
            [3] => 0
        )

    [1] => Array
        (
            [0] => 3500
            [1] => 2300
            [2] => 6600
            [3] => 0
        )

    [2] => 181000
    [3] => 12400
)

这篇关于PHP数组索引除了 - 不同层次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆