PHP Array alphabetisch sortieren mit Überschriften

Oft ist es sinnvoll ein array zu sortieren und mit alphabetischen Überschriften zu versehen, um eine Auflistung übersichtlicher darstellen zu können. Dies macht gerade bei Namen, Tieren oder Automarken sinn – und genau anhand des letzten Beispiels möchte ich euch in meinem heutigen Blogbeitrag zeigen, wie man ein PHP Array sortieren und mit Überschriften versehen kann.

A

  • Acura
  • Alfa Romeo
  • Aston Martin
  • Audi

B

  • BMW i
  • BMW
  • Bentley
  • Bugatti
  • Buick

C

  • Cadillac
  • Chevrolet
  • Chrysler
  • Citroen
  • Cobra

D

  • DS Automobiles
  • Dacia
  • Daewoo
  • Daihatsu
  • De Tomaso
  • Dodge

E

  • Nichts gefunden!

F

  • Faraday Future
  • Ferrari
  • Fiat
  • Fisker
  • Ford

G

  • GMC

H

  • Holden
  • Honda
  • Hyundai

I

  • Infiniti
  • Isuzu

J

  • Jaguar
  • Jeep

K

  • Kia
  • Koenigsegg

L

  • Lada
  • Lamborghini
  • Lancia
  • Land Rover
  • Lexus
  • Ligier
  • Lincoln
  • Lotus

M

  • Mahindra
  • Marcos
  • Maserati
  • Maybach
  • Mazda
  • Mercedes-Benz
  • Mini
  • Mitsubishi
  • Morgan

N

  • NSU
  • Nissan

O

  • Oldsmobile
  • Opel

P

  • PG
  • Pagani
  • Peugeot
  • Piaggio
  • Pontiac
  • Porsche
  • Proton

Q

  • Nichts gefunden!

R

  • Renault
  • Rolls-Royce
  • Rover

S

  • Saab
  • Seat
  • Skoda
  • Smart
  • Ssang Yong
  • StreetScooter
  • Subaru
  • Suzuki

T

  • TVR
  • Talbot
  • Tata
  • Tesla
  • Toyota
  • Trabant
  • Triumph

U

  • Nichts gefunden!

V

  • VW
  • Vauxhall
  • Volvo

W

  • Wiesmann

X

  • Nichts gefunden!

Y

  • Nichts gefunden!

Z

  • Nichts gefunden!

Array erstellen

Als erstes benötigen wir ein Array. In meinem Beispiel habe ich eine Liste von Automarken erstellt und zu einem array zusammengefasst.

$automarken		=	array( "Acura","Alfa Romeo","Aston Martin","Audi","Bentley","BMW","BMW i","Bugatti","Buick","Cadillac","Chevrolet","Chrysler","Citroen","Dacia","Daihatsu","Dodge","DS Automobiles","Faraday Future","Ferrari","Fiat","Fisker","Ford","GMC","Holden","Honda","Hyundai","Infiniti","Isuzu","Jaguar","Jeep","Kia","Koenigsegg","Lada","Lamborghini","Lancia","Land Rover","Lexus","Ligier","Lincoln","Lotus","Mahindra","Maserati","Maybach","Mazda","Mercedes-Benz","Mini","Mitsubishi","Morgan","Nissan","Opel","Pagani","Peugeot","PG","Piaggio","Porsche","Renault","Rolls-Royce","Saab","Seat","Skoda","Smart","Ssang Yong","StreetScooter","Subaru","Suzuki","Tesla","Toyota","Triumph","TVR","Vauxhall","Volvo","VW","Wiesmann","Cobra","Daewoo","De Tomaso","Marcos","NSU","Oldsmobile","Pontiac","Proton","Rover","Talbot","Tata","Trabant" );

Range festlegen

Als nächstes definiere ich die Range. Da ich die Automarken von A – Z sortieren möchte sieht sie so aus

$range	=	range('A', 'Z');

Ausgabe der Überschriften

Als nächstes wird die Range mithilfe der foreach einmal durchlaufen und die alphabetischen Überschriften werden erzeugt.

foreach ($range as $buchstabe) {
	echo '
'; echo '

' . $buchstabe . '

'; echo '
'; }

Der Code sollte Euch schon einmal die Buchstaben von A bis Z ausgeben. An der Stelle könnte man dem h3 auch die id=“A“ beispielsweise geben und eine Sprungmarke erzeugen. Hier findet Ihr übrigens ein Beispiel für elegantes Scrollen zu einer Sprungmarke.

Die Ausgabe der richtigen Marken

Nun kommen wir zum wohl entschiedensten Punkt – Die richtige Zuordnung der Automarken aus dem array zu den alphabetischen Überschriften.

$marken					=	'';
foreach ( $automarken as $marke ) {
	$marke_anfangsbuchstabe		=	substr($marke, 0, 1 );
	if ( $marke_anfangsbuchstabe == $buchstabe ) {
		$marken[]		=	'
  • ' . $marke . '
  • '; } }

    Zunächst einmal schneiden wir bei allen Automarken alle Buchstaben mit substr($marke, 0, 1 ) ab – bis auf den ersten. Diesen speichern wir in der Variable $marke_anfangsbuchstabe. Nun können wir Abfragen ob der Anfangsbuchstabe der Automarke mit dem Buchstaben übereinstimmt, welches gerade in der foreach abgefragt wird. Wenn ja, dann wird die Automarke in einem neuen array $marken[] gespeichert.

    Ist die foreach der $automarken einmal durchgelaufen wird abgefragt, ob es Marken mit dem Anfangsbuchstaben gab. Wenn ja, dann wird mittels asort($marken); alle Marken noch einmal sortiert und dann ausgegeben. Da Sie in einem Array() gespeichert wurden müssen wir uns erneut einer foreach behelfen.

    if ( $marken && is_array( $marken ) ) {
    asort($marken);
    	echo '
      '; foreach ( $marken as $marke ) { echo $marke; } echo '
    '; } else { echo '
    • Nichts gefunden!
    '; }

    Wenn keine Daten gefunden wurden, bzw. $marken leer ist wird der Text Nichts gefunden! ausgegeben.

    Der komplette Code auf einen Blick

    	$automarken		=	array( "Acura","Alfa Romeo","Aston Martin","Audi","Bentley","BMW","BMW i","Bugatti","Buick","Cadillac","Chevrolet","Chrysler","Citroen","Dacia","Daihatsu","Dodge","DS Automobiles","Faraday Future","Ferrari","Fiat","Fisker","Ford","GMC","Holden","Honda","Hyundai","Infiniti","Isuzu","Jaguar","Jeep","Kia","Koenigsegg","Lada","Lamborghini","Lancia","Land Rover","Lexus","Ligier","Lincoln","Lotus","Mahindra","Maserati","Maybach","Mazda","Mercedes-Benz","Mini","Mitsubishi","Morgan","Nissan","Opel","Pagani","Peugeot","PG","Piaggio","Porsche","Renault","Rolls-Royce","Saab","Seat","Skoda","Smart","Ssang Yong","StreetScooter","Subaru","Suzuki","Tesla","Toyota","Triumph","TVR","Vauxhall","Volvo","VW","Wiesmann","Cobra","Daewoo","De Tomaso","Marcos","NSU","Oldsmobile","Pontiac","Proton","Rover","Talbot","Tata","Trabant" );
    	
    	echo '
    '; $range = range('A', 'Z'); foreach ($range as $buchstabe) { echo '
    '; echo '

    ' . $buchstabe . '

    '; $marken = ''; foreach ( $automarken as $marke ) { $marke_anfangsbuchstabe = substr($marke, 0, 1 ); if ( $marke_anfangsbuchstabe == $buchstabe ) { $marken[] = '
  • ' . $marke . '
  • '; } } if ( $marken && is_array( $marken ) ) { asort($marken); echo '
      '; foreach ( $marken as $marke ) { echo $marke; } echo '
    '; } else { echo '
    • Nichts gefunden!
    '; } echo '
    '; } echo '
    ';

    oliver Ich heisse Oli und komme aus dem wuseligen Berlin. Meine Leidenschaft für Webseiten hält seit mehr 10 Jahren an. Dabei ist es egal ob ich kleinere oder größere Projekte umsetze - ich hänge mich in jedes Projekt mit voller Leidenschaft rein und versuche mich dabei immer wieder neu zu entdecken und neue Ideen umzusetzen.

    Hinterlasse ein Kommentar

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht.

    Letzte Aktualisierung am 21.11.2018 / Affiliate Links / Bilder von der Amazon Product Advertising API