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 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					=	array();
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.

    Keine Produkte gefunden.

    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 '
    ';

    revilodesign oli

    2 Kommentare

    Schreibe ein Kommentar zu PHP Array alphabetisch sortieren mit Überschriften

    1. avatar servusservus sagt:

      wo ist die css-Datei ?

      • avatar adminadmin sagt:

        Hey servus,

        dafür gibt es keine CSS 🙂 Ich denke das ist kein Hexenwerk, dies nachzubauen.

        LG Oli

    Schreibe einen Kommentar zu servus Antworten abbrechen

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

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

    Follow Me

    doch mal auf Instagram