draxu26480 2018-03-14 04:35
浏览 159
已采纳

php - 如何对多维数组求和

I have data below :

Array(
        [A] => Array
            (
                [AA] => 10
            )

        [B] => Array
            (
                [BA] => 5
                [BB] => 1
                [BC] => -2
            )

        [C] => Array
            (
                [CA] => 3
                [CB] => 0
            )
    )

I want to sum the value of second element my array (BA,BB,BC, etc) like this :

    Array(
        [A] => 10        
        [B] => 4
        [C] => 3
    )

I've tried to do with foreach (I'm using php as my platform) but the result is wrong, can someone give me explanation and the logic to solve this? thanks

  • 写回答

3条回答 默认 最新

  • doudansui6650 2018-03-14 04:40
    关注

    You can loop thru your array and use array_sum

    $arr = array(
        "A" => array
            (
                "AA" => 10,
            ),
    
        "B" => array
            (
                "BA" => 5,
                "BB" => 1,
                "BC" => -2
            ),
    
        "C" => array
            (
                "CA" => 3,
                "CB" => 0
            )
    );
    
    $result = array();
    foreach( $arr as $key => $val ){
        $result[$key] = array_sum ( $val );
    }
    
    echo "<pre>";
    print_r( $result );
    echo "</pre>";
    

    This will result to:

    Array
    (
        [A] => 10
        [B] => 4
        [C] => 3
    )
    

    Doc: http://php.net/manual/en/function.array-sum.php

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • douti0687 2018-03-14 04:50
    关注

    This should work for arrays like the one of your example:

     $arr = array(
        "A" => array
            (
                "AA" => 10,
            ),
    
        "B" => array
            (
                "BA" => 5,
                "BB" => 1,
                "BC" => -2
            ),
    
        "C" => array
            (
                "CA" => 3,
                "CB" => 0
            )
    );
    $res = array();
    foreach($arr as $key => $value) {
            foreach($value as  $number) {
                (!isset($res[$key])) ?
                    $res[$key] = $number :
                    $res[$key] += $number;
            }
        }
    
    
    
    echo "<pre>";
    print_r( $res );
    echo "</pre>";
    

    This is working without using an inbuilt function.

    评论
  • drzil26260 2018-03-14 06:06
    关注

    if you want sum column

    <?php
    $array = array
        (
          "A"=>array
            (
    "AA" => 10,
            ),
          "B"=>array
            (
                "BA" => 5,
                "BB" => 1,
                "BC" => -2
            ),
          "C"=>array
            (
                "CA" => 3,
                "CB" => 0
             )
            );
    
    foreach ($array as $key=>$value)
    {
    $mehrdad[]=$key;
    }
    foreach ($mehrdad as $key1=>$value1)
    {
        $arrays=$array[$value1];
    foreach ($arrays as $key2=>$value2)
    {
    
    $mehrdadi[]=$key2;
    }
    
    }
    $mehrdadend=array_unique($mehrdadi);
    $mehrdadis = array();
    foreach ($mehrdadend as $key3=>$value3)
    {
    $sum=array_sum(array_column($array, $value3));
    
    $mehrdadis[$value3] = $sum;
    }
    print_r($mehrdadis);
    ?>
    

    Result

    Array
    (
        [AA] => 10
        [BA] => 5
        [BB] => 1
        [BC] => -2
        [CA] => 3
        [CB] => 0
    )
    
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 计算机网络子网划分路由模拟操作
  • ¥15 MATLAB的画图问题
  • ¥15 c语言用fopen_s成功打开文件之后闪退
  • ¥20 用C++完成,并且运用数组
  • ¥30 求解电力系统潮流计算结果不收敛问题
  • ¥15 某易易盾点选data解析逆向
  • ¥15 系统崩溃,关于订单的处理
  • ¥15 datax-web连接hive为数据源时发生报错,如何解决?
  • ¥15 plink在进行gwas分析时总读取不到表型
  • ¥20 数据结构与c语言的实践内容