MySQL查询:
select id, ad_click, contact_submit, MONTH(datetime) as months, YEAR(datetime) years from wpxc_leaderboard_counters order by datetime
它以这种方式显示结果:
Array (
[0] => Array (
[0] => stdClass Object (
[id] => 2 [ad_click] => 0 [contact_submit] => 0 [datetime] => 2019-11-01
)
[1] => stdClass Object (
[id] => 3 [ad_click] => 0 [contact_submit] => 0 [datetime] => 2019-11-01
)
[2] => stdClass Object (
[id] => 4 [ad_click] => 1 [contact_submit] => 0 [datetime] => 2019-11-01
)
[3] => stdClass Object (
[id] => 5 [ad_click] => 0 [contact_submit] => 1 [datetime] => 2019-11-01
)
[4] => stdClass Object (
[id] => 1 [ad_click] => 3 [contact_submit] => 2 [datetime] => 2019-12-06
)
)
)
但想以这种方式显示:
Array (
[0] => Array (
[11] => stdClass Object (
[id] => 2 [ad_click] => 0 [contact_submit] => 0 [datetime] => 2019-11-01
[id] => 3 [ad_click] => 0 [contact_submit] => 0 [datetime] => 2019-11-01
[id] => 4 [ad_click] => 1 [contact_submit] => 0 [datetime] => 2019-11-01
[id] => 5 [ad_click] => 0 [contact_submit] => 1 [datetime] => 2019-11-01
)
[12] => stdClass Object (
[id] => 1 [ad_click] => 3 [contact_submit] => 2 [datetime] => 2019-12-06
)
)
)
希望通过修改数组可以做到这一点,因为我已经使用了不同的方法并花费了大量时间,但尚未实现。
您可以在获取查询结果时将日期的子字符串用作数组键。
while ($row = $query->fetch_object()) {
$result[substr($row->datetime, 5, 2)][] = $row;
}
您显示的数组与您的查询不太匹配。如果您已经在查询中选择MONTH,则无需使用substr
。您可以使用
$result[$row->months][] = $row;
我还建议您考虑按年份和月份进行分组,以用于将来的排序目的,但是由于您的查询是按日期时间排序的,因此这现在可能无关紧要。这取决于您打算如何使用分组数据,但是如果将Year作为密钥的一部分,则可以确保组将始终正确排序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句