2016-10-20 4 views
0

그래서 uasort 인 다차원 배열을 내림차순으로 정렬했습니다. 나는 var_dump($winrateArray)을했는데 제대로 정렬되었습니다. 가장 높은 값은 첫 번째로 반환 된 배열에 있습니다. 그러나 내가 var_dump($winrateArray[0][3])을 시도 할 때 가장 높은 가치를 기대하는 부분이 있습니다. 대신 $winrateArray[1][3]에 있습니다. uasort을 제대로 사용하고 있습니까?PHP는 uasort를 사용하여 배열 정렬

정렬되지 않은 덤프 :

array(2) { [0]=> array(4) { [0]=> string(2) "18" [1]=> string(1) "1" [2]=> int(0) [3]=> int(1) } [1]=> array(4) { [0]=> string(2) "31" [1]=> string(1) "1" [2]=> int(100) [3]=> int(101) } } 

결과 순위 덤프 :

array(2) { [1]=> array(4) { [0]=> string(2) "31" [1]=> string(1) "1" [2]=> int(100) [3]=> int(101) } [0]=> array(4) { [0]=> string(2) "18" [1]=> string(1) "1" [2]=> int(0) [3]=> int(1) } } 

특정 덤프 :

int(1) 

.

$winrateArray[0][0] = '18'; 
$winrateArray[0][1] = '1'; 
$winrateArray[0][2] = 0; 
$winrateArray[0][3] = 1; 

$winrateArray[1][0] = '31'; 
$winrateArray[1][1] = '1' 
$winrateArray[1][2] = 100; 
$winrateArray[1][3] = 101; 

var_dump($winrateArray); 

function cmp($a, $b){ 
     if ($a[3] == $b[3]){ 
      return 0; 
     } 
     return ($a[3] < $b[3]) ? 1 : -1; 
    } 

uasort($winrateArray, 'cmp'); 

var_dump($winrateArray); 
var_dump($winrateArray[0][3]); 
+1

을 단지 재정렬하고 대체 할 것입니다. 우리가 도움과 테스트를 많이 할 것입니다. – Clay

+0

배열과 결과를 확인해야합니다. – PHPglue

+0

결과가 제대로 정렬되었지만 키가 보존되어 있으므로 원하는 결과가 표시되지 않습니다. – krasipenkov

답변

0

당신은 할 수 있습니다 :

$newArray = $winrateArray; 
uasort($winrateArray, 'cmp'); 

$i = 0; 
foreach($winrateArray as $key => $item) { 
    $newArray[$i][3] = $item[3]; 
    $i++; 
} 

그 후 새로운 배열을 사용합니다. 당신은 열쇠를 보존 할 것이고, 당신은 사용하고있는 데이터의 예제 세트를 올리는

+0

그 솔루션은 완벽하게 작동합니다. 나는 "$ key => $ item"이 무엇을하는지 완전히 이해하지는 못했지만 많이 감사드립니다! – SheepBandit

+0

$ key는 foreach 루프 (부모 키)의 현재 항목의 키이고 item은 지정된 부모의 내부 배열 (3 개의 요소가있는 배열)을 보유합니다. – krasipenkov