[英]Php, sum values in foreach loop
在以下示例中,我无法摆脱“通知:未定义的索引:totalcount”:
stdClass Object
(
[1] => stdClass Object
(
[name] => How do you find our site?
[id] => 1
[values] => stdClass Object
(
[0] => stdClass Object
(
[value] => Piece of cake
[count] => 10
)
[3] => stdClass Object
(
[value] => Very Easy
[count] => 20
)
[4] => stdClass Object
(
[value] => Easy
[count] => 30
)
[6] => stdClass Object
(
[value] => Hard
[count] => 40
)
)
[totalcount] => 100
)
[2] => stdClass Object
(
[name] => What is your favourite color?
[id] => 2
[values] => stdClass Object
(
[1] => stdClass Object
(
[value] =>Green
[total] => 0
)
[2] => stdClass Object
(
[value] => Blue
[total] => 0
)
[5] => stdClass Object
(
[value] => Red
[total] => 0
)
[7] => stdClass Object
(
[value] => Black
[total] => 0
)
)
[totalcount] => 0
)
)
然后,我使用foreach循环数组以根据名称值进行排序:
foreach ($array as $i => $row) {
if ($id != $row->id) {
$id = $row->id;
$data[$row->id]['name'] = $row->question;
$data[$row->id]['id'] = $row->id;
}
$data[$row->id]['opts'][$i]['value'] = $row->value;
$data[$row->id]['opts'][$i]['count'] = $row->total;
$data[$row->id]['totalcount'] += $data[$row->id]['opts'][$i]['count'];
}
但请继续在此处获取索引通知“” $data[$row->id]['totalcount'] += $data[$row->id]['opts']
“我不确定如何解决此问题。 结果都是正确的,只是该特定行的问题。
我只需要对“ 计数 ”的所有值求和并将其作为单个值分配给totalcount
任何帮助表示赞赏。
该通知的原因是,在尝试添加$ data [$ row-> id] ['totalcount']之前,该数据尚未初始化。 该通知在这种情况下不会影响结果,但是PHP希望您知道正在发生什么。
删除通知的最简单方法是在切换当前ID时为该变量添加一个初始化行,但是只有在确保不会从第1行切换到第2行并返回到第2行的情况下,您才能这样做。再排第1行(或类似的内容)。 为此,添加
$data[$row->id]['totalcount'] = 0;
给你
if ($id != $row->id)
块。
最简单的解决方案是将初始化行与isset()结合使用。
例:
if (isset($data[$row->id]['totalcount']))
{
$data[$row->id]['totalcount'] += $data[$row->id]['opts'][$i]['count'];
}
else
{
$data[$row->id]['totalcount'] = $data[$row->id]['opts'][$i]['count'];
}
代替
$data[$row->id]['totalcount'] += $data[$row->id]['opts'][$i]['count'];
我会这样
$data[$row->id]['totalcount'] = !isset($data[$row->id]['totalcount']):0?$data[$row->id]['totalcount'] + $data[$row->id]['opts'][$i]['count'];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.