【发布时间】:2015-08-10 05:45:07
【问题描述】:
这似乎是书中最古老的问题,有数百种可用资源,但到目前为止,我尝试过的每个解决方案都没有解决我的问题。我希望你能帮忙。
我正在尝试显示一个图表,其中显示了过去 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 中根据需要对其进行排序?
【问题讨论】:
标签: php arrays sorting multidimensional-array