php数组不会对数字求和

时间:2014-10-07 10:11:18

标签: php arrays sum

为什么这段代码没有为每个用户加上我的花费的小时数?

while ($row = $result->fetch_assoc()) 
{
    $total_spent_time += $row['spent_time'];

    if (!array_key_exists($row['activity_type'], $data)) 
    {
        $data[$row['activity_type']] = array(
            'spent_time' => array('user' => array())
        );

        $data[$row['activity_type']]['spent_time']['user'][$row['user']] = array('time' => $row['spent_time']);

        if (array_key_exists($row['user'], $data[$row['activity_type']]['spent_time']['user'])) 
        {
            $data[$row['activity_type']]['spent_time']['user'][$row['user']]['time'] += $row['spent_time'];
        }
    }

它只给我行的最后一个值。

2 个答案:

答案 0 :(得分:0)

尝试在循环之前声明计数器:

$total_spent_time = 0;
while ($row = $result->fetch_assoc()) {
    $total_spent_time += $row['spent_time'];
}
echo $total_spent_time;

答案 1 :(得分:0)

你在某些地方做错了,我们需要更多关于查询和结果集的细节。
你没有在数组分配的任何地方使用$ total_spent_time。

$data[$row['activity_type']]['spent_time']['user'][$row['user']] = array('time' => $row['spent_time']);

因为你只使用$ row ['spent_time'],并且因为没有第二个循环if if语句只对每个用户执行一次($ row ['user'])
这就是你只得到1的原因值。