我有这个输出到图表的循环。 随着时间的推移,我的“历史”表中的数据急剧增长,我想通过选择所有其他结果来减少输出到图表上的数据量。
如何使用我的代码执行此操作?
<?php
$cdate = 0;
$counter = 0;
$sql = "SELECT * FROM history WHERE time < '$ctime' ORDER BY time asc";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$cdate = ($row["time"]);
$sql1 = "SELECT AVG(value) AS avgval FROM history WHERE time = '$cdate' AND time < '$ctime'";
$result1 = $conn->query($sql1);
if ($result1->num_rows > 0) {
while($row1 = $result1->fetch_assoc()) {
$avgval = $row1["avgval"];
echo "[new Date((".($row["time"] * 1000).")), ".$avgval."],";
}
}
}
}
?>
例如,如果我的表(历史)中有这个:
[id] --- [ticker] --- [value] --- [time]
1 --- 第 1 组 --- 100 --- 730
2 --- 第 2 组 --- 200 --- 730
3 --- 第 1 组 --- 110 --- 740
4 --- 第 2 组 --- 235 --- 740
5 --- 第 1 组 --- 310 --- 750
6 --- 第 2 组 --- 485 --- 750
我怎样才能只输出#1、#2 的平均值和#5、#6 的平均值 - 忽略#4 和#5?
最佳答案
<?php
$cdate = 0;
$counter = 0;
$sql = "SELECT * FROM history WHERE time < '$ctime' ORDER BY time asc";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$cdate = ($row["time"]);
$sql1 = "SELECT AVG(value) AS avgval FROM history WHERE time = '$cdate' AND time < '$ctime'";
$result1 = $conn->query($sql1);
$i = 0; // incrementor
if ($result1->num_rows > 0) {
while($row1 = $result1->fetch_assoc()) {
++$i; // plus one
if($i % 2 == 0) { // check if $i is even
$avgval = $row1["avgval"];
echo "[new Date((".($row["time"] * 1000).")), ".$avgval."],";
}
}
}
}
}
?>
关于php - 如何在此循环中选择所有其他结果? [PHP],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46744502/