2016-07-15 12 views
-1

Ich habe ein Array wie soSortierung Array basierend auf dem Wert

array:2 [▼ 
    "folder1" => array:3 [▼ 
    1 => "d1_2.png" 
    2 => "d1_1.png" 
    3 => "d1_3.png" 
    ] 
    "folder2" => array:3 [▼ 
    0 => "d2_2.png" 
    1 => "d2_3.png" 
    3 => "d2_1.png" 
    ] 
] 

Was ich versuche Art zu tun ist, diese Anordnung auf dem Wert. So sollte die Ausgabe so etwas wie dieses

array:2 [▼ 
    "folder1" => array:3 [▼ 
    0 => "d1_1.png" 
    1 => "d1_2.png" 
    2 => "d1_3.png" 
    ] 
    "folder2" => array:3 [▼ 
    0 => "d1_1.png" 
    1 => "d1_2.png" 
    2 => "d1_3.png" 
    ] 
] 

Alle Beispiele, die ich Art gesehen haben, basierend auf einem Schlüsselwert, aber ich weiß nicht Schlüssel haben. Ich habe mehrere Sortierfunktionen ausprobiert, aber keiner von ihnen scheint das Array zu sortieren.

Wie kann ich es basierend auf dem Array, das ich habe, sortieren?

Dank

+0

Sorry, was ich meinte war, dass meine Schlüssel Indizes sind, keine Darstellung. –

+0

Könnten die Downvoters sich bitte darum kümmern, zu kommentieren. – Oli

Antwort

1

Es gibt eine große Anzahl von sorting functions in php, die einen Array auf Wert oder Schlüssel basierend sortieren können, die Verbindung zum Index und zu Fuß in der Kind-Arrays erhalten.

Was ich denke, Sie wollen, ist die sort Funktion, wie folgt aus:

sort($array['folder1']); 
sort($array['folder2']); 

Oder diese:

foreach ($array as $key => $subarray) { 
    sort($array[$key]); 
} 

Gerade im Auge behalten. Es ist nicht das äußere Array, das Sie sortieren möchten, sondern seine untergeordneten Arrays.

+0

Da ich die Ordnernamen nicht kenne, müsste ich mit der zweiten Option gehen. Wenn ich ein Unterfeld ausgabe, kann ich sehen, dass es funktioniert. Es scheint jedoch, das sortierte Subarray nicht zu dem ursprünglichen Array hinzuzufügen. –

+0

Bitte beachten Sie, dass ich meine Antwort aktualisiert habe. Wenn Sie nur ein 'sort ($ subarray) tun, wird nur eine Kopie der untergeordneten Arrays sortiert. Sie müssen tatsächlich eine 'sort ($ array [$ key])', wie die aktualisierte Antwort stattdessen tun. –

+0

Perfekt, genau das habe ich gesucht. Vielen Dank –

1

Sie diese Funktion nutzen zu können:

asort() - sort associative arrays in ascending order, according to the value 
+0

Das ist tatsächlich eine der Funktionen, die ich ausprobiert habe, aber es scheint nicht zu sortieren, weil ich denke, dass es die Sortierung auf folder1 und folder2 macht. –

1

Verwendung array_walk (funktionelle Art und Weise von foreach) durch das äußere Feld zu gehen und verwenden Sie dann in dort sort

http://php.net/manual/en/function.array-walk.php
http://php.net/manual/en/function.sort.php

$arr = array(
    "folder1" => array(
     "1" => "d1_2", 
     "2" => "d1_1", 
     "3" => "d1_3" 
    ), 
    "folder2" => array(
     "1" => "d2_3", 
     "2" => "d2_1", 
     "3" => "d2_2" 
    ) 
); 

var_dump($arr); 

array_walk($arr, function (&$e) { 
    sort($e); 
}); 

var_dump($arr); 
Verwandte Themen