【问题标题】:PHP - Grouping matching variables and calculate averagesPHP - 对匹配变量进行分组并计算平均值
【发布时间】:2012-04-24 10:55:35
【问题描述】:

希望你一切都好。

我目前正在自学 PHP,作为其中的一部分,我一直在尝试开发一个反馈系统,用于存储我工作的餐厅的客户反馈卡信息。

我遇到的问题围绕着我用来生成 json 输出的 php 代码,然后 jqplot 使用该 json 输出来创建图表。

这是我用来执行此操作的代码:

<?php

// $toDate and $fromDate will eventually be values coming over via post however i am using static values at the moment for testing

$toDate = time();
$fromDate = time() - (7 * 24 * 60 * 60);

$sql = "SELECT * FROM feedback WHERE visitDateTime BETWEEN FROM_UNIXTIME($fromDate) AND FROM_UNIXTIME($toDate)";

$result = mysql_query($sql) or die(mysql_error());
?>

获取数据后,我在 javascript 和 php 中使用此代码生成 jqplot 数据。

<script>
$(document).ready(function(){
 var line1 = [
<?php
while ($row = mysql_fetch_assoc($result)){
echo '[';
echo "'";
echo $row['visitDateTime'];
echo "',";
echo $row ['foodScore'];
echo ']';
echo ',';
}

?>

];

// code then goes on to generate the chart, etc....

</script>

这工作正常并生成以下 json 输出:

 var line1 = [
['2012-04-20 19:00:00',7],['2012-04-20 19:00:00',8],['2012-04-20 12:00:00',8],['2012-04-22 16:00:00',5],['2012-04-21 20:00:00',9],  

];

但是,我遇到的问题是,当 2 个日期和时间相同时(它们可能会相同),这会导致图表出现问题,因为我有 1 个日期的多个值。

经过一番思考,我得出的结论是,我实际需要做的是计算日期和时间的平均分数,以便生成如下所示的输出:

var line1 = ['unique date/time', average of all scores from this date/time ]

但我什至不知道如何开始这样做。

我知道这可能是错误的,但我认为我需要遍历所有检索到的记录并检查日期/时间是否相同。所以基本上,而不是返回这个:

['2012-04-20 19:00:00',7],['2012-04-20 19:00:00',8],['2012-04-20 12:00:00',8],['2012-04-20 12:00:00',5],['2012-04-20 12:00:00',9]

我需要退货:

['2012-04-20 19:00:00',7.5],['2012-04-20 12:00:00',7.3]

如果有人可以就如何解决这个问题向我提供任何建议,那真的会帮到我。

谢谢大家。

【问题讨论】:

    标签: php jquery graph charts jqplot


    【解决方案1】:

    您可以让 MySQL 为您完成,而不是在服务器上进行平均计算。您可以使用这样的查询直接从 MySQL 检索分组和平均的数据

    SELECT avg(foodScore), visitDateTime FROM feedback WHERE visitDateTime BETWEEN FROM_UNIXTIME($fromDate) AND FROM_UNIXTIME($toDate) group by visitDateTime
    

    如果这不起作用,请告诉我

    【讨论】:

    • 您先生(或女士)是个天才,我想我欠您一品脱吉尼斯啤酒,哈哈。我已经对其进行了测试,似乎一切正常。
    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    相关资源
    最近更新 更多