这似乎是一本书中最古老的问题,并且有数百个可用的资源,但到目前为止,我尝试过的每个解决方案都没有解决我的问题。我希望你能帮忙。
我正在尝试显示一个图表,显示最近31天的数据。输出的数组看起来像这样:
$data[
0 =>
'day' => 10,
'amount' => 5,
'count' => 2
1 =>
'day' => 16,
'amount' => 4,
'count' => 2
2 =>
'day' => 21,
'amount' => 16,
'count' => 1
3 =>
'day' => 11,
'amount' => 0,
'count' => 0
4 =>
'day' => 12,
'amount' => 0,
'count' => 0
]
本质上,这个数组由两部分组成。前3个内部数组是包含金额和计数的日期,剩余的27天则是任何未核算的日期,它们的金额和计数都设为0。例如,$data[5]
将是第13天,$data[21]
是第31天。$data[22]
将等于第1天,一直到第9天,因此显示最近31天的数据。
此外,还有一个按顺序排列的日期数组需要输出。
$days[
0 =>
'day' => 10
1 =>
'day' => 11
2 =>
'day' => 12
...
30 =>
'day' => 9
]
我已经尝试了以下方法,虽然
$data
现在被排序,但它本质上只是$days
的副本,失去了$data
中保存的其他值。$data = array_uintersect($days, $data, array($this, 'compare_days'));
function compare_days($order, $array) {
return strcmp($order['day'], $array['day']);
}
最近怎么样?我该如何对$data
进行排序,以便在$days
所需的顺序下保留数据?
json_encode($data)
返回{"5":{"day":"10","amount":"0","donations":"0"},"2":{"day":"11"...
,而应该读取[{"day":"10"...}]
。 我猜测这是因为数组现在在索引键方面是“无序”的。您有任何想法吗? - J Youngecho json_encode(array_values($graph));
解决了问题,幸运的是它重置了数组索引为连续的值。感谢您的帮助! - J Young0,1,..
,也可以使用usort
来处理连续的数组索引。 - Narendrasingh Sisodia