我有一个$ 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(无值)
如何做到这一点?
答案 0 :(得分:1)
这应该可以解决问题。
$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;
答案 1 :(得分:0)
我认为您可以使用uksort
对第二个数组进行排序,并实际比较自定义比较器中第一个数组的值
e.g:
uksort($arr2, function($i1, $i2) {
return $arr1[$i1] - $arr1[$i2];
});
答案 2 :(得分:0)
这样的事情怎么样?
arsort($action_used);
foreach ($action_used as $k => $v) {
$newArray[$k] = $actions[$k];
unset($action_used[$k];
}
$newArray = array_merge($newArray, $action_used);