PHP用uasort排序数组

So I sorted a multidimensional array with uasort in descending order. I did a var_dump($winrateArray) and it is sorted properly. The highest value is in the first returned array. However when I try a var_dump($winrateArray[0][3]) which is where I expect the highest value to be it isn't there. Instead it is in $winrateArray[1][3]. Am I using uasort properly?

Unsorted dump:

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) } }

Sorted dump:

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) } }

Specific dump:

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]); 

You can do:

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

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

and use the new array after that. You will preserve keys and you will reorder and replace 3rd elements only