2012-09-25 3 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 인 "Withdraw"가 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; 
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