2016-10-20 11 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++; 
} 

その後新しい配列を使用しています。あなたは鍵を保存し、3番目の要素のみを並べ替えて置き換えます

+0

その解決策は完全に機能します。私は、 "$ key => $ item"がやっていることを十分に理解していませんが、ありがとうございます! – SheepBandit

+0

$ keyはforeachループ(親キー)の現在の項目のキーで、itemは指定された親の内部配列(3要素の配列)を保持します。 – krasipenkov

関連する問題