douben7260 2011-09-02 17:04
浏览 17
已采纳

php数组之和

I have the following array with multiple levels. I wish to get the sum total of [price], [adults] and [childern] but have not been able traverse the levels.

The answer I should get with this example is price=380 adults=5 and children=1

Array ( 
    [8] => Array ( 
        [2] => Array ( 
            [num_rooms] => 2 
            [adults] => Array ( 
                [0] => 1 
                [1] => 1 
             ) 
             [children] => Array ( 
                 [0] => 0 
                 [1] => 0 
             ) 
             [prices] => Array ( 
                 [0] => 50 
                 [1] => 50 
             ) 
             [price] => 130 
             [supp] => 30 
         ) 
         [3] => Array ( 
             [num_rooms] => 1 
             [adults] => Array ( 
                 [0] => 1 
             ) 
             [prices] => Array ( 
                 [0] => 100 
             ) 
             [price] => 150 
             [supp] => 50 
         ) 
     ) 
     [1] => Array ( 
         [2] => Array ( 
             [num_rooms] => 2 
             [adults] => Array ( 
                 [0] => 1 
                 [1] => 1 
             ) 
             [children] => Array ( 
                 [0] => 1 
                 [1] => 0 
             ) 
             [prices] => Array ( 
                 [0] => 75 
                 [1] => 75 
             ) 
             [price] => 170 
             [supp] => 20 
         )
     )
 )

Thanks

  • 写回答

4条回答 默认 最新

  • dousa2794 2011-09-02 17:16
    关注

    This should work:

    $price = 0;
    $adults = 0;
    $children = 0;
    
    foreach($arr as $l1_key => $l1_value)           // iterates over the first level array
    {
        foreach($l1_value as $l2_key => $l2_value)  // iterates over second level arrays
        {
             $price += $l2_value['price'];          // add up price totals
    
             foreach($l2_value['adults'] as $value) // iterate through adults array values
             {
                 $adults += $value;                 // sum up adult count
             }
    
             foreach($l2_value['children'] as $value) // iterate through children array values
             {
                 $children += $value;                // sum up children count
             }
        }
    }
    
    // now $price, $adults, and $children contain the totals for each
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?