我有這樣PHP多排序通過使用外部陣列
Array
(
[0] => Array
(
[id] => 21
[time] => FOUR_DAY
[zones] => 25
)
[1] => Array
(
[id] => 20
[time] => THREE_DAY
[zones] => 2
)
[2] => Array
(
[id] => 22
[time] => ONE_DAY
[zones] => 2
)
[3] => Array
(
[id] => 24
[time] => ONE_DAY
[zones] => 2
)
)
陣列我所需要的是
1-排序由「時間」字段不同條件下,採用
$time = array('ONE_DAY','TWO_DAYS','THREE_DAYS','FOUR_DAYS','FIVE_DAYS');
2-然後按ASC順序按'區域'對上述結果進行排序。
預期輸出:
Array
(
[0] => Array
(
[id] => 22
[time] => ONE_DAY
[zones] => 2
)
[1] => Array
(
[id] => 24
[time] => ONE_DAY
[zones] => 2
)
[2] => Array
(
[id] => 20
[time] => THREE_DAY
[zones] => 2
)
[3] => Array
(
[id] => 21
[time] => FOUR_DAY
[zones] => 25
)
)
請幫我一個不錯的選擇。我曾嘗試使用usort
作爲'時間'字段和multi_sort
函數。但停滯不前。 在此先感謝!
這很棒,你用usort試過。但是顯示你已經嘗試過的代碼。然後我們會嘗試修復它。 –
什麼決定了您想要的結果中索引0和1的項目的排序順序? 「id」是第三種排序標準,還是您關心id上的排序順序可能無法預測?你有沒有考慮將'ONE_DAY','TWO_DAY'等等定義爲常量,以便更容易進行排序? –
@dragoste:我按照我的要求使用這段代碼進行'時間'排序。
usort($ myArray,function($ a,$ b)use($ time){pos_a = array_search($ a ['time'],$ time); \t \t $ pos_b = array_search($ b [''時間'],$ time); \t \t return $ pos_a - $ pos_b; \t}); –