簡體   English   中英

從PHP中的另一個數組值對數組進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM