【问题标题】:Summing of all elements in the sub array - PHP子数组中所有元素的总和 - PHP
【发布时间】:2011-10-16 04:56:59
【问题描述】:

我有以下数组作为 $main_array 。想总结子数组中的所有元素,例如 [0]=>6, [1]=>11, [2]=>15。

Array 
( 
[0] => Array 
       ( 
         [0] => 1 
         [1] => 2 
         [2] => 3 
       ) 
[1] => Array 
       ( 
         [0] => 2 
         [1] => 4 
         [2] => 5 
       ) 
[2] => Array 
       ( 
         [0] => 8 
         [1] => 4 
         [2] => 3 
         ) 
)

尝试了以下代码。

foreach ($main_array as $key => $value)
  $main_array[$key] = Array('1'=>array_sum($value));
print_r($main_array);

但我得到的数组结构是,

Array 
( 
    [0] => Array 
    ( 
        [1] => 6 
    ) 
    [1] => Array 
    ( 
        [1] => 11
    ) 
    [2] => Array 
    ( 
        [1] => 15 
    ) 
)

我期待的数组结构如下。

Array 
( 
    [0] => 6

    [1] => 11

    [2] => 15

)

提前致谢!

【问题讨论】:

    标签: php multidimensional-array


    【解决方案1】:

    当您调用 Array 函数时,您明确地创建了一个数组,因此您必须从 Array('1'=>array_sum($value)); 中删除它

    你的代码应该是这样的

    foreach ($main_array as $key => $value)
      $main_array[$key] = array_sum($value);
    

    【讨论】:

      【解决方案2】:

      试试这个:

        foreach ($main_array as $key => $value)
           $main_array[$key] = array_sum($value);
      

      即直接将和放在顶层数组中。

      【讨论】:

        【解决方案3】:

        在输入数组的每一行上调用array_sum()array_map() 使此操作具有表现力、简洁性,并且不需要声明任何新变量。

        代码:(Demo)

        $array = [
            [1, 2, 3],
            [2, 4, 5],
            [8, 4, 3],
        ];
        
        var_export(array_map('array_sum', $array));
        

        输出:

        array (
          0 => 6,
          1 => 11,
          2 => 15,
        )
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-12
          • 2019-09-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多