[英]Sort an array from another array values in PHP
我有一個$ actions數組和$ actions_used數組。
$ actions_used看起來像這樣:
array(1) {
[2]=>
string(1) "18"
[5]=>
string(1) "33"
}
$ actions看起來像這樣:
array(3) {
[1]=>
string(9) "Withdraw"
[2]=>
string(13) "Deposit"
[5]=>
string(10) "Blabla"
}
我想根據$ actions_used中的值對$ actions進行排序。
正確的輸出將用於$ actions:
array(3) {
[5]=>
string(9) "Blabla"
[2]=>
string(13) "Deposit"
[1]=>
string(10) "Withdraw"
}
為什么? 因為數組鍵5“ Blabla”的最大值為“ 33”,然后是數組鍵“ 2”的值為18,最后是數組鍵1“ Withdraw”的值為0(無值)
如何才能做到這一點?
這應該可以解決問題。
$sorted_actions = array();
asort($actions_used);
foreach($actions_used AS $key => $amount) {
$sorted_actions[] = array('amount' => $amount, 'action' => $actions[$key]);
unset($actions[$key]);
}
$sorted_actions = $sorted_actions + $actions;
我認為您可以使用uksort
對第二個數組進行排序,並在自定義比較器中實際比較第一個數組的值
例如:
uksort($arr2, function($i1, $i2) {
return $arr1[$i1] - $arr1[$i2];
});
這樣的事情如何工作?
arsort($action_used);
foreach ($action_used as $k => $v) {
$newArray[$k] = $actions[$k];
unset($action_used[$k];
}
$newArray = array_merge($newArray, $action_used);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.