2016-10-20 3 views
0

Итак, я отсортировал многомерный массив с uasort в порядке убывания. Я сделал var_dump($winrateArray), и он отсортирован правильно. Самое высокое значение - в первом возвращенном массиве. Однако, когда я пытаюсь использовать var_dump($winrateArray[0][3]), где я ожидаю, что это самое высокое значение, это не так. Вместо этого он находится в $winrateArray[1][3]. Я правильно использую uasort?PHP сортировка массива с uasort

Unsorted свалка:

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++; 
} 

и использовать новый массив после этого. Вы сохраните ключи, и вы измените порядок и замените только 3-й элемент

+0

Это решение работает отлично. Я не совсем понимаю, что «как $ key => $ item» делает, но большое спасибо! – SheepBandit

+0

$ key - ключевой элемент текущего элемента в цикле foreach (родительские ключи), а элемент хранит внутренний массив (массив с 3 элементами) данного родителя. – krasipenkov

Смежные вопросы