我有一个包含日期、状态和总和的数组:
Array
(
[0] => Array
(
[date] => 2019-07-06 14:01:52
[status] => paid
[summ] => 100
)
[1] => Array
(
[date] => 2019-07-02 12:22:31
[summ] => 320
[status] => pending
)
[2] => Array
(
[date] => 2019-07-01 18:43:58
[summ] => 100
[status] => pending
)
[3] => Array
(
[date] => 2019-06-26 14:01:52
[status] => canceled
[summ] => 200
)
我需要先按状态(1.pending、2.paid、3.canceled)排序这个数组,然后按日期(新的在顶部)。
我需要的订单:
待定 2019-07-02 12:22:31 待定 2019-07-01 18:43:58 已付 2019-07-06 14:01:52 取消 2019-06-26 14:01:52
日期我没有任何问题:
usort($new11, function($a, $b) {
return strtotime($b['date']) - strtotime($a['date']);
});
但是如何按状态排序我需要的顺序?
谢谢:)
你可以使用宇宙飞船:
<?php
$new11 = [
[
'date' => '2019-07-06 14:01:52',
'status' => 'paid',
'summ' => 100,
],
[
'date' => '2019-07-02 12:22:31',
'status' => 'pending',
'summ' => 320,
],
[
'date' => '2019-07-01 18:43:58',
'status' => 'pending',
'summ' => 100,
],
[
'date' => '2019-06-26 14:01:52',
'status' => 'canceled',
'summ' => 200,
],
];
$pending = 3;
$paid = 2;
$canceled = 1;
usort($new11, function($a, $b) use ($pending, $paid, $canceled) {
return (${$b['status']} <=> ${$a['status']}) * 10 +
(strtotime($b['date']) <=> strtotime($a['date']));
});
var_dump($new11);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句