1

我有一个 $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(无值)

如何才能做到这一点?

4

3 回答 3

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;
于 2012-09-25T21:04:42.633 回答
0

我认为您可以对第二个数组进行排序,uksort并实际比较自定义比较器中第一个数组的值

例如:

uksort($arr2, function($i1, $i2) {
    return $arr1[$i1] - $arr1[$i2];
});
于 2012-09-25T21:01:31.353 回答
0

这样的事情会如何工作?

arsort($action_used);
foreach ($action_used as $k => $v) {
    $newArray[$k] = $actions[$k];
    unset($action_used[$k];
}
$newArray = array_merge($newArray, $action_used);
于 2012-09-25T21:04:31.807 回答