2016-08-26 6 views
0

場合は、値に基づいて多次元配列を注文:私は次の配列持ち、その内のアレイ

Array 
(
    [0] => Array 
     (
      [0] => 2 
      [1] => 1 
      [2] => Text 
      [3] => 0 

     ) 

    [1] => Array 
     (
      [0] => 3 
      [1] => 1 
      [2] => Another Text 
      [3] => 0 

     ) 
} 

を、私はそれは次のようになりますので、内部の配列のインデックス番号2の値によってoutter配列を注文する必要があります:

Array 
(
    [0] => Array 
     (
      [0] => 2 
      [1] => 1 
      [2] => Another Text 
      [3] => 0 

     ) 

    [1] => Array 
     (
      [0] => 3 
      [1] => 1 
      [2] => Text 
      [3] => 0 

     ) 
} 

私はsort()array_multisort()のような方法を見つけましたが、彼らがこのケースに収まらないようです。また、元の配列には多くの項目があるため、高速なアルゴリズムでなければなりません。

この場合、phpに実装されているメソッドはありますか?

+0

どのように正確に注文しますか?あなたの例は '$ arr [1] [2]'と '$ arr [0] [2]'を単に入れ替えるだけです。 – Sherif

+0

ああ、問題の説明とコードが一致しません。私はあなたのサンプルの結果ではなく、説明に続いて私の答えを書いた。 – MartinMouritzen

+0

[PHPで配列とデータを並べ替えるにはどうすればいいですか?](http://stackoverflow.com/questions/17364127/how-can-i-sort-arrays-and-data-in-php) –

答えて

0

まあ、私はこれは可能だろうか速いと言うことはできませんが、あなたのような何かを行うことができませんでした。

$tmpArray = array(); 
foreach($multiDimArray as $index=>$array) 
{ 
    $tmpArray[$array[2]] = $index; 
} 
ksort($tmpArray); 

$finalArray = array(); 
foreach($tmpArray as $sortedIndex) 
{ 
    $finalArray[] = $multiDimArray[$sortedIndex]; 
} 

をしかし、私はこれを行うよりエレガントな方法があると確信しています。

+0

期待される結果。おそらくもっと良い方法があるかもしれませんが、それは私の問題を解決しました。ありがとう –

0

あなたはusort関数を使用することができ、何かのように:

function sortBySecondIndex($a,$b) { 
    return strnatcmp($a[2],$b[2]); 
} 

usort($array,"sortBySecondIndex"); 
関連する問題