从PHP中的另一个数组值排序数组

时间:2012-09-25 20:56:24

标签: php sorting multidimensional-array

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

如何做到这一点?

3 个答案:

答案 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);