[英]Sort an array by values in another array
我有一個問題,這可能看起來很基本,但我不能得到一個簡單的解決方案,我認為必須有一個。
我有一個數組,我需要帶來一個特定的順序。
$arr1 = [
['code' => 555, 'amount' => 100],
['code' => 555, 'amount' => 200],
['code' => 555, 'amount' => 300],
['code' => 222, 'amount' => 100],
['code' => 222, 'amount' => 200],
['code' => 222, 'amount' => 300],
['code' => 777, 'amount' => 100],
['code' => 777, 'amount' => 200],
['code' => 777, 'amount' => 300]
]
我希望它按此順序帶來:
$sortedArr = [
['code' => 555, 'amount' => 100],
['code' => 222, 'amount' => 100],
['code' => 777, 'amount' => 100],
['code' => 555, 'amount' => 200],
['code' => 222, 'amount' => 200],
['code' => 777, 'amount' => 200],
['code' => 555, 'amount' => 300],
['code' => 222, 'amount' => 300],
['code' => 777, 'amount' => 300]
]
如果這有幫助,我確實有另一個數組與代碼的確切順序
$codes = [555, 222, 777];
任何幫助表示贊賞! 謝謝!
您可以使用usort和用戶定義的比較函數。
如果您使用特殊的PHP類,有一個簡單的解決方案。
$codes = [555, 222, 777];
$sortedArr = tableArray::create($arr1)
->addSQLfunction('weight',function($v) use($codes){
$order = array_search($v,$codes);
return $order !== false ? $order : PHP_INT_MAX;
})
->orderBy('amount ASC, weight(code) ASC')
->fetchAll()
;
//class: https://github.com/jspit-de/tableArray
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.