2012-09-25 103 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

相关问题