如何根据订单对$ item类型进行排序?这就是我目前所拥有的:
$order = ['AA', 'zl', 'Dr', 'co', 'og'];
$items->sort(
function ($a, $b) use ($order) {
return strcmp($b->type, $a->type) // how do I apply the order here?
?: strcmp($b->date, $a->date);
}
);
基本上它是一个两列排序,它首先按类型排序,然后按日期排序。该类型将使用数组顺序而不是典型的字母顺序进行排序。
答案 0 :(得分:2)
您可以比较$order
中与每个项目类型对应的键。
return ($order[$b->type] - $order[$a->type])
?: strcmp($b->date, $a->date);
如果您的所有商品都包含$order
中的类型,则此功能应该有效。如果没有,你将得到未定义的索引错误,这将搞乱排序。但是,由于你还没有指明在你的问题中如何对这类项目进行排序,我假设他们都这样做了。