2017-06-06 17 views
0

配列は、(私はPHPを使用しています)PHPで複雑な3D配列のこのタイプをソートする方法

array(2){[0]=> 
      {[0]=>"DEF"=> 
         {[0]=>"a",[1]=>"c",[2]=>"b"}, 
       [1]=>"ABC"=> 
         {[0]=>"f",[1]=>"d",[2]=>"e"}}, 
     [1]=> 
      {[0]=>"DEF"=> 
         {[0]=>"h",[1]=>"i",[2]=>"g"}, 
      [1]=>"ABC"=> 
         {[0]=>"k",[1]=>"l",[2]=>"j"} 
      } 
     } 

私は最初のエントリのように並べ替え、それをすることを希望する。このようなものですすなわち[0]インデックスは、2つのエントリがありますDEFとABCので、ABCとDEFをソートする必要がありますので、ABCでもabcをソートする必要があります。

最終結果は、事前にこの

array(2){[0]=> 
      {[0]=>"ABC"=> 
         {[0]=>"d",[1]=>"e",[2]=>"f"}, 
       [1]=>"DEF"=> 
         {[0]=>"a",[1]=>"b",[2]=>"c"}}, 
     [1]=> 
      {[0]=>"ABC"=> 
         {[0]=>"j",[1]=>"k",[2]=>"l"}, 
      [1]=>"DEF"=> 
         {[0]=>"g",[1]=>"h",[2]=>"i"} 
      } 
     } 

おかげ

+5

を解決します(https://stackoverflow.com/help/how-to-ask)[良い質問をする方法を読みます] –

+3

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

+0

この表記は "[0] =>" ABC "=>"を意味しますか?位置[0]の値が "ABC"であると仮定すると、 "{[0] =>" d "、[1] =>" e "、[2] =>" f "}"それは配列の2番目の位置ですか?それは "ABC"と呼ばれるキーのサブアレイですか? – MikeBergerUS

答えて

0

する必要がありますPHPは、カスタムの並べ替えオプションがあります。これを試してみてください: http://php.net/manual/en/function.usort.php

私はそれを使用していませんでしたが、以前は見つかっていて、それが存在したことを覚えていました。 sortを使用して

+0

私は必要な目的にこのカスタムソートを使用する方法を定義できません。 – Rahul

+0

あなたが指摘したように、それは複雑な3D配列です。あなたの平均的な並べ替えはそれをカットしません。独自のソートアルゴリズムを書くことも、usortを使うこともできます。 –

0

は問題

$a = array(
      array(
       "ABC"=>array("d","e","f"), 
       "DEF"=>array("a","b","c") 
       ), 

      array(
       "ABC"=>array("j","k","l"), 
       "DEF"=>array("g","h","i") 
       ) 
      ); 

    sort($a); 
    var_dump($a); 

結果

array(2) { 
    [0]=> 
    array(2) { 
    ["ABC"]=> 
    array(3) { 
     [0]=> 
     string(1) "d" 
     [1]=> 
     string(1) "e" 
     [2]=> 
     string(1) "f" 
    } 
    ["DEF"]=> 
    array(3) { 
     [0]=> 
     string(1) "a" 
     [1]=> 
     string(1) "b" 
     [2]=> 
     string(1) "c" 
    } 
    } 
    [1]=> 
    array(2) { 
    ["ABC"]=> 
    array(3) { 
     [0]=> 
     string(1) "j" 
     [1]=> 
     string(1) "k" 
     [2]=> 
     string(1) "l" 
    } 
    ["DEF"]=> 
    array(3) { 
     [0]=> 
     string(1) "g" 
     [1]=> 
     string(1) "h" 
     [2]=> 
     string(1) "i" 
    } 
    } 
} 
+0

サブアレイの長さが異なる場合は、アルファベット順ではなくサブアレイの長さに応じてソートされます – Rahul

関連する問題