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