我有3级嵌套数组,我想帮助生成其值的总和。 数组就像
SUM
/ \
A B
/ \ /\
Billed Route Billed Route
/ \ / \
Value Value Value Value
如何计算Billed和Route字段的总和?
到目前为止,我有这段代码
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;
}
}
我在每个新密钥的第一个循环上收到一个未定义的索引错误。
答案 0 :(得分:1)
您是否已将$sum2[$stat_name]
定义为0
?如果没有,您将在第二个foreach
循环的每次迭代中得到未定义的索引错误,因为您尝试对未定义的值执行+=
。
此外,如果您尝试添加Billed
和Route
的值,则将它们存储在关联数组($sum2[$stat_name]
)的不同部分中是一个额外的步骤。只需将它们放在数组的相同键中即可。
答案 1 :(得分:0)
如果这些是数组中的实际键,那么:
$route = 0;
$billed = 0;
foreach($yourarray['SUM'] AS $ab => $subarray) {
$billed += $subarray['Billed']['Value'];
$route += $subarray['Routed']['Value'];
}
答案 2 :(得分:0)
$sum2[$stat_name] += $val;
与:
相同$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;