注释:这不仅仅是对电话时间的求和,电话时间需要通过函数单独计算。
我目前有以下代码
$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等的和作为一个变量,并将其传递给$j[][$item]中的工业项目,以便用于进一步的处理。
我试过
while ($dataitem = $month_query_phonetime->fetch_object()) {
$m = $m + point_for_phone_time($dataitem->phone_time);
}
$j[][$item] = $m;它给了我如下的价值
Array
(
[0] => Array
(
[1] => {value1}
)
[1] => Array
(
[2] => {value1+value2}
)
)为了得到想要的结果,这是正确的格式来处理这个问题。
发布于 2018-12-08 14:37:40
最后,将查询附加到我希望它出现的循环中,现在它将显示预期的结果。
foreach ($data as $obj)
{
$month_query_phonetime = $conn->query("SELECT phone_time FROM bigscreen_daily_data WHERE MONTH(work_date) = {$obj->mon} AND YEAR(work_date) = YEAR(CURDATE()) AND user_id = {$userid} ");
$m = 0;
while ($dataitem = $month_query_phonetime->fetch_object()) {
$m = $m + point_for_phone_time($dataitem->phone_time);
}
$obj->prog_point = $obj->prog_point + $m;
}发布于 2018-12-06 18:58:29
如果我正确地理解了并且您试图为每个phone_time求和每个user_id,为什么不让数据库为您做繁重的工作,并使用聚合查询:
SELECT user_id, SUM(phone_time) AS sum_phone_time
FROM bigscreen_daily_data
GROUP BY user_id它的执行速度可能也比遍历user_id、查询每个phone_time并自己对它们进行求和更快。
发布于 2018-12-06 19:23:16
让MySQL按月分组,并将数据集限制在今年:
SELECT MONTH(work_date) AS m,SUM(phone_time) AS sum_phone_time
FROM bigscreen_daily_data
WHERE user_id = 28 AND work_date >= MAKEDATE(year(now()),1);
GROUP BY mhttps://stackoverflow.com/questions/53657923
复制相似问题