【发布时间】:2016-09-05 12:09:33
【问题描述】:
这解释起来有点复杂,尤其是在标题中 - 所以这里是:
我正在制作一个包含 12 个索引的 PHP 数组,每个月一个 - 每个月都会显示当月记录的页面浏览量,为了获得月份,我使用当前的 UNIX 时间并采取离开 2629743 秒(一个月),每次循环进行时,都会增加 2629743 秒 - 这应该生成数组,例如 (1, 4, 5, 9) 1 月的 1 个视图,2 月的 4 个视图,等等。
如果没有视图,我需要它类似于 (null, null, 9) 所以 1 月没有视图,2 月没有视图,3 月 9 日没有视图 - 但索引完全混乱,视图顺序错误.
循环代码:
$Month = 1; // Start with January
$MonthTimestamp = 2629743; // Start with the time of ONE month from current time
$ArrayTimeStamp = array();
while ($Month <= 12): // Go from January to February
$Value1 = $now - $MonthTimestamp;
$ViewsThisMonth = mysqli_fetch_object(mysqli_query($db, "SELECT SUM(Views) AS NumberFinalViews FROM BlogViews WHERE TimeRecord >= '$Value1' AND TimeRecord < '$now'"));
$ArrayTimeStamp[] = $ViewsThisMonth->NumberFinalViews;
$MonthTimestamp = $MonthTimestamp + 2629743;
$Month++;
endwhile;
重申一下,数组需要存储每个月的页面浏览量,这些页面浏览量存储在数据库中,所有页面浏览量都带有时间戳,这些时间戳需要分成 12 个月,然后放入数组。
2 月的 4 个视图需要在第二个索引中,并且时间戳会大于 1 月的时间戳但小于 3 月。
感谢所有帮助!
编辑: $now 是以秒为单位的当前 UNIX 时间。
【问题讨论】:
-
$now 来自哪里?
-
你有什么理由使用神秘的
endwhile而不是简单的while (...) { ... }? -
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到您的查询中。 不要使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug。 -
为什么是
null?让它0[0,0,9] -
0 也可以。 $now 是当前的 UNIX 时间,应该注意。