Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.

Share this Page URL
Help

3.6 Arrays sortieren > 3.6 Arrays sortieren - Pg. 121

Arrays sortieren Die Angabe der Konstante SORT_LOCALE_STRING sorgt dafür, dass die Sortie- rung lokalisiert nach den Einstellungen des Betriebssystems erfolgt (System- Locale). Bei einer deutschen Lokalisierungseinstellung wird deshalb Öl als Erstes ausgegeben, bei englischer Sortierung wäre Öl das letzte Element. Sie können die Werte natürlich auch numerisch sortieren. Wenn Ihr Array die Preise für Bobs Produkte enthält, können Sie diese wie folgt in aufstei- gender numerischer Reihenfolge sortieren: $prices = array( 100, 10, 4 ); sort($prices); TIPP 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Die Preise erscheinen nun in der Reihenfolge 4, 10, 100. Beachten Sie, dass sort() die Groß-/Kleinschreibung unterscheidet. In der Sortierung werden alle Großbuchstaben vor den Kleinbuchstaben verarbei- tet, d. h. A ist kleiner als Z, aber Z ist kleiner als a. Für die Funktion gibt es einen zweiten optionalen Parameter. Sie können eine der Konstanten SORT_REGULAR (Voreinstellung), SORT_NUMERIC (numeri- sche Sortierung) oder SORT_STRING (Stringsortierung) übergeben. Die Mög- lichkeit zur Angabe des Sortierungstyps ist beispielsweise nützlich, wenn Sie Strings vergleichen wollen, die Zahlen enthalten. Angenommen, am Anfang zweier Strings stehen die Zahlen 2 und 12. Numerisch gesehen ist 2 weniger als 12, aber der String '12' ist kleiner als der String '2' . Außerdem können Sie wie eben erwähnt über SORT_LOCALE_STRING die Sortierung nach der locale-Einstellung des Betriebssystems vornehmen lassen. 3.6.2 Mit asort() und ksort() sortieren Wenn Sie zur Speicherung von Produkten und deren Preisen ein Array mit beschreibenden Schlüsseln verwenden, benötigen Sie verschiedene Arten von Sortierfunktionen, um Schlüssel und zugehörige Werte bei der Sortie- rung zusammenzuhalten. Der folgende Code erstellt ein Array mit den drei Produkten und den zuge- hörigen Preisen und sortiert dieses Array dann nach Preisen in aufsteigen- der Reihenfolge: $prices = array( 'Reifen'=>100, 'Öl'=>10, 'Zündkerzen'=>4 ); asort($prices); Die Funktion asort() sortiert das Array nach dem Wert jedes Elements. Im Array sind die Werte die Preise, die Schlüssel hingegen die Beschreibungs- texte. Wollen Sie eine Sortierung nicht nach Preis, sondern nach Beschrei- bung vornehmen, dann können Sie ksort() verwenden. Hierbei erfolgt die Sortierung nicht nach dem Wert, sondern nach dem Schlüssel. Der folgende Code hat die Sortierung der Schlüssel im Array in alphabetischer Reihen- folge ( Reifen, Zündkerzen, Öl ) zum Ergebnis: $prices = array( 'Reifen'=>100, 'Öl'=>10, 'Zündkerzen'=>4 ); ksort($prices); 121