PHP:对键相同的子数组的所有值求和

标签 php mysql json

注意:这里不是简单的累加电话时间,电话时间需要通过PHP函数单独计算

我目前有以下代码

$i = array(1,2,3,4,5,6,7,8,9,10,11,12);

$j = array();

foreach ($i as $item) {
    $month_query_phonetime = $conn->query("SELECT phone_time FROM bigscreen_daily_data WHERE MONTH(work_date) = {$item} AND YEAR(work_date) = YEAR(CURDATE()) AND user_id = 28");

    while ($dataitem = $month_query_phonetime->fetch_object()) {
        $j[][$item] = point_for_phone_time($dataitem->phone_time);
    }
}

print_r($j);

结果如下

    Array
    (
        [0] => Array
            (
                [1] => 0
            )

        [1] => Array
            (
                [1] => 10
            )

        [2] => Array
            (
                [2] => 48
            )

        [3] => Array
            (
                [2] => 24
            )

        [4] => Array
            (
                [3] => 48
            )
        [4] => Array
            (
                [3] => 48
            )

    )

我正在尝试获取所有 [1] => value[2]=> value 等的总和作为一个变量并将其传递给 indual item $j[][$item] 以便它可以用于进一步处理

我试过

while ($dataitem = $month_query_phonetime->fetch_object()) {
    $m = $m + point_for_phone_time($dataitem->phone_time);
}

$j[][$item] = $m;

它给我的值(value)如下

Array
(
    [0] => Array
        (
            [1] => {value1}
        )

    [1] => Array
        (
            [2] => {value1+value2}
        )
)

因此为了获得所需的结果,这是处理此问题的正确格式。

最佳答案

如果我理解正确并且您正在尝试对每个 user_idphone_time 求和,为什么不让数据库为您完成繁重的工作并使用聚合查询:

SELECT   user_id, SUM(phone_time) AS sum_phone_time
FROM     bigscreen_daily_data
GROUP BY user_id

它的执行速度可能也比遍历 user_id、为每个用户查询所有 phone_time 并自行求和要快。

关于PHP:对键相同的子数组的所有值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53657923/

相关文章:

PHP - 从字符串中删除 <img> 标签

php - 如何集成AJAX避免PHP CMS的页面重定向

php - 检查当前日期是否在两个日期之间+ mysql select查询

mysql - 与连接表的多对多关系

json - 我应该如何处理 JSON 中的 HATEOAS 链接和引用?

php - Laravel 在主帐户上为所有员工提供服务

mysql - ECS 上的 WordPress - 无法连接到 mysql 容器

php - MYSQL 查询在使用 where、group by 和 order by 时花费太多时间

java - 如何解析不完整的 JSON 之类的字符串

javascript - 将 JSON 日期时间对象转换为 JavaScript 对象