鍍金池/ 問答/PHP/ php 二維數(shù)組計算求和

php 二維數(shù)組計算求和

 [34] => Array
        (
            [sum] => 13
            [name] => 油區(qū)開發(fā)部
            [id] => 27
            [parentid] => 1
            [children] => Array
                (
                )

        )

    [35] => Array
        (
            [sum] => 2
            [name] => 三分公司
            [id] => 31
            [parentid] => 1
            [children] => Array
                (
                    [0] => Array
                        (
                            [sum] => 156
                            [name] => 項目管理分中心
                            [id] => 52
                            [parentid] => 31
                            [children] => Array
                                (
                                )

                        )

                    [1] => Array
                        (
                            [sum] => 12
                            [name] => 彎管機組
                            [id] => 54
                            [parentid] => 31
                            [children] => Array
                                (
                                )

                        )

                    [2] => Array
                        (
                            [sum] => 20
                            [name] => 車隊
                            [id] => 53
                            [parentid] => 31
                            [children] => Array
                                (
                                )

                        )

                    [3] => Array
                        (
                            [sum] => 10
                            [name] => 維修機組
                            [id] => 55
                            [parentid] => 31
                            [children] => Array
                                (
                                )

                        )

                    [4] => Array
                        (
                            [sum] => 55
                            [name] => 機關
                            [id] => 51
                            [parentid] => 31
                            [children] => Array
                                (
                                )

                        )

                )

        )

    [36] => Array
        (
            [sum] => 56
            [name] => 五分公司
            [id] => 32
            [parentid] => 1
            [children] => Array
                (
                )

        )

如何計算三分公司的sum值,是三分公司 children下的 所有 sum的和

回答
編輯回答
不討囍

foreach計算就可以了。又不是無限極

2017年11月20日 20:01
編輯回答
萌小萌

使用foreach循環(huán)。

2017年12月11日 13:20
編輯回答
孤星

定義一個變量:$sums = 0;
假設你外面的大數(shù)組是 $data,
foreach($data as $key => $value)
{

if($value['name'] == '三分公司'){

        foreach($value['children'] as $k => $v)
        {
           $sums += $v['sum']  
        }
    }

}

print_r($sums);

或者是:
foreach($data as $key => $value)
{

$sums = array_sum(array_column($value['children'],'sum'));

}
print_r($sums);

2018年3月4日 03:11
編輯回答
囍槑
$arr = [[
  'name' => '三分公司',
  'children' => [
    ['sum' => 156],
    ['sum' => 12]
  ]
]];

function getChildrenSum($children)
{
  $sum = 0;
  if (is_array($children)) {
    foreach ($children as $item) {
      $sum += $item['sum'];
      if(isset($item['children'])){
        $sum += getChildrenSum($item['children']);
      }
    }
  }
  return $sum;
}

$sum = array_reduce(
  array_filter($arr, function ($item) {
    return $item['name'] === '三分公司';
  }),
  function ($sum, $item) {
    return $sum + getChildrenSum($item['children']);
  },
  0
);

echo $sum;
2017年2月21日 13:23
編輯回答
有你在
$data = Array
(
    34 => Array
    (
        'sum'     => 13,
        'name'    => '油區(qū)開發(fā)部',
        'id'      => 27,
        'parentid'=> 1,
        'children' => Array
        (
        ),
    ),
    35 => Array(
        'sum'     => 2,
        'name'    => '三分公司',
        'id'      => 31,
        'parentid'=> 1,
        'children' => Array
        (
            0 => Array
            (
                'sum'     => 156,
                'name'    => '項目管理分中心',
                'id'      => 52,
                'parentid'=> 31,
                'children'=> [],

            ),
            1 => Array
            (
                'sum'     => 12,
                'name'    => '彎管機組',
                'id'      => 54,
                'parentid'=> 31,
                'children'=> [],
            ),
        ),
    ),
    36 => Array
    (
        'sum'     => 56,
        'name'    => '五分公司',
        'id'      => 32,
        'parentid'=> 1,
        'children' => Array
        (
        ),
    )
);

foreach($data as $key => $value)
{
    $data[$key]['sum'] = array_sum(array_column($value['children'],'sum'));
}
print_r($data);
2017年11月13日 17:28