2017-06-06 4 views
0

Das Array wie folgt ist (I PHP verwenden)Wie diese Art von komplexem 3D-Array in PHP sortieren

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

Ich wünsche, es zu seine Art wie der erste Eintrag dh [0] Index hat zwei Einträge DEF und ABC also sollte ABC und DEF sortiert sein, dann sollte in ABC auch abc sortiert werden.

sollte das Endergebnis dieses

sein
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"} 
      } 
     } 

Vielen Dank im Voraus

+5

[Lesen Sie, wie Sie eine gute Frage] (https://stackoverflow.com/help/how-to-ask) –

+3

Mögliches Duplikat von [Wie kann ich Arrays und Daten in PHP sortieren?] (Https://stackoverflow.com/questions/17364127/how-can-i-sort-arrays-and-data-in-php) – hassan

+0

Was macht Diese Schreibweise bedeutet "[0] =>" ABC "=>"? Angenommen, der Wert an Position [0] ist "ABC", welche Position bedeutet "{[0] =>" d ", [1] =>" e ", [2] =>" f "}" reinkommen? Ist das die zweite Position im Array? Ist es ein Subarray eines Schlüssels namens "ABC"? – MikeBergerUS

Antwort

0

PHP eine benutzerdefinierte Sortieroption hat. Versuchen Sie dies: http://php.net/manual/en/function.usort.php

Ich habe es nicht verwendet, aber ich hatte es zuvor gefunden und erinnere mich, dass es existierte.

+0

Ich bin nicht in der Lage zu definieren, wie diese benutzerdefinierte Sortierung für den Zweck, den ich brauche. – Rahul

+0

Wie Sie darauf hingewiesen haben, ist es eine komplexe 3D-Array, Ihre durchschnittliche Art wird es nicht schneiden. Sie können Ihren eigenen Sortieralgorithmus schreiben oder Sie können lernen, usort zu verwenden. –

0

sort Verwendung löst Problem

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

Das Ergebnis

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

Wenn die Länge der Unterfelder unterschiedlich ist, wird sie nach der Länge der Unterfelder sortiert und nicht alphabetisch sortiert – Rahul