这似乎是书中最古老的问题,有数百种可用的资源,但到目前为止,我尝试的每个解决方案都没有解决我的问题.我希望你能提供帮助.
我正在尝试显示显示最近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
]
基本上这个数组由两部分组成.前三个内部数组是包含金额和计数的天数,其余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内按需订购?
解决方法:
只需使用uasort
作为
uasort($data, function($a,$b) use ($days){
foreach($days as $value){
if($a['day'] == $value['day']){
return 0;
break;
}
if($b['day'] == $value['day']){
return 1;
break;
}
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。