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

uksort2番目の配列を並べ替えて、カスタム比較子の最初の配列の値を実際に比較できると思います

例えば:

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 に答える