在PHP中对嵌套数组求和

在PHP中对嵌套数组求和,php,arrays,loops,Php,Arrays,Loops,我有3级嵌套数组,我想得到一些帮助,使数组生成其值的总和。 阵列的运行方式如下所示 SUM / \ A B / \ /\ Billed Rout

我有3级嵌套数组,我想得到一些帮助,使数组生成其值的总和。 阵列的运行方式如下所示

                                    SUM
                                 /       \
                               A          B
                              / \         /\
                        Billed  Route Billed Route
                         /        \      /      \
                       Value     Value  Value    Value
如何计算帐单字段和路线字段的总和

到目前为止,我有这个代码

foreach($sum as $client)
            {

                $s = 0;
                foreach($client as $stat_name=>$stat_value)
                {
                    $val = 0;
                    // echo "<br><u><i>";
                    // echo $stat_name;
                    // echo "</u></i><br>";
                    foreach($stat_value as $value)
                    {
                        $val += intval($value);
                    }
                    $sum2[$stat_name] += $val;
                }

            }
foreach($sum as$client)
{
$s=0;
foreach($stat\u name=>$stat\u value的客户端)
{
$val=0;
//回声“
”; //echo$stat_name; //回声“
”; foreach($stat_值为$value) { $val+=intval($value); } $sum2[$stat_name]+=$val; } }

我在每个新键的第一个循环中收到一个未定义索引错误。

如果这些是数组中的实际键,则:

$route = 0;
$billed = 0;
foreach($yourarray['SUM'] AS $ab => $subarray) {
   $billed += $subarray['Billed']['Value'];
   $route  += $subarray['Routed']['Value'];
}
同:

$sum2[$stat_name] = $sum2[$stat_name] + $val;
                    ^^^^^^^^^^^^^^^^^ undefined the first time you loop
要解决此问题,应初始化它:

$sum2[$stat_name] = isset($sum2[$stat_name]) ? $sum2[$stat_name] : 0;
$sum2[$stat_name] += $val;

您是否将
$sum2[$stat\u name]
定义为
0
?如果没有,则在第二次
foreach
循环的每次迭代中都会出现未定义的索引错误,因为您试图对未定义的值执行
+=


另外,如果您尝试添加
账单
路由
的值,则将它们存储在关联数组的不同部分(
$sum2[$stat\u name]
)是一个额外的步骤。只需将它们添加到数组的同一个键中。

如果(isset($sum2[$stat_name]){/*do+=*/}否则{/*do=*/}
您想对所有账单字段和路由字段求和,或者对账单字段求和,然后对路由字段求和,或者做什么?另外,数组的
打印
也会有所帮助,因为有一个更简单的方法。@bwoebi这正是问题所在。非常感谢你
$sum2[$stat_name] = isset($sum2[$stat_name]) ? $sum2[$stat_name] : 0;
$sum2[$stat_name] += $val;