如何使用数组顺序对此集合进行排序?
问题描述:
如何根据订单对$ 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);
}
);
基本上它是一个两列的排序,它首先按类型排序,然后按日期排序。该类型将使用数组顺序而不是典型的字母顺序进行排序。
答
您可以比较$order
中对应每个项目类型的按键。
return ($order[$b->type] - $order[$a->type])
?: strcmp($b->date, $a->date);
如果您的所有物品的类型都包含在$order
中,这应该可以工作。如果没有,你会得到未定义的索引错误,这将弄乱排序。但是既然你没有指定这样的项目应该如何排序在你的问题,我假设他们都这样做。
啊,你用过字典。这应该工作。 – rotaercz
完美的作品。谢谢 – rotaercz
不客气。 –