2017-08-01 240 views
1

如何根據訂單對$ 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); 
    } 
); 

基本上它是一個兩列的排序,它首先按類型排序,然後按日期排序。該類型將使用數組順序而不是典型的字母順序進行排序。

回答

2

您可以比較$order中對應每個項目類型的按鍵。

return ($order[$b->type] - $order[$a->type]) 
      ?: strcmp($b->date, $a->date); 

如果您的所有物品的類型都包含在$order中,這應該可以工作。如果沒有,你會得到未定義的索引錯誤,這將弄亂排序。但是既然你沒有指定這樣的項目應該如何排序在你的問題,我假設他們都這樣做。

+0

啊,你用過字典。這應該工作。 – rotaercz

+0

完美的作品。謝謝 – rotaercz

+0

不客氣。 –

相關問題