2012-09-25 141 views
1

我得到了$ actions數組和$ actions_used數組。對PHP中另一個數組值進行排序

$ actions_used看起來像這樣:

array(1) { 
    [2]=> 
    string(1) "18" 
    [5]=> 
    string(1) "33" 
} 

$行動看起來是這樣的:

array(3) { 
     [1]=> 
     string(9) "Withdraw" 
     [2]=> 
     string(13) "Deposit" 
     [5]=> 
     string(10) "Blabla" 
    } 

我想基於這是在$ actions_used價值$行動進行排序。

正確的輸出將是$操作:

array(3) { 
     [5]=> 
     string(9) "Blabla" 
     [2]=> 
     string(13) "Deposit" 
     [1]=> 
     string(10) "Withdraw" 
    } 

爲什麼?由於數組鍵5,「Blabla」具有最大值「33」,然後出現具有值18的數組鍵「2」,並最終出現數組鍵1,具有0的「Withdraw」(無值)

如何才能做到這一點?

回答

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; 
0

我想你可以在第二陣列uksort排序和實際值從第一陣列中的自定義比較

例如爲:

uksort($arr2, function($i1, $i2) { 
    return $arr1[$i1] - $arr1[$i2]; 
}); 
0

比較怎麼會是這樣的工作?

arsort($action_used); 
foreach ($action_used as $k => $v) { 
    $newArray[$k] = $actions[$k]; 
    unset($action_used[$k]; 
} 
$newArray = array_merge($newArray, $action_used); 
+0

這是行得通的,但是剩下的動作是不是在actions_used?他們不在$ newArray中 – Karem

相關問題