www.PHP-Kurs.com

PHP lernen für Einsteiger
und Fortgeschrittene

PHP-Tutorial mit Videos

Sie befinden sich: Startseite » PHP für Fortgeschrittene » Arrays » Mehrdimensionale Arrays

Mehrdimensionales Array: verschiedenartige Daten ablegen

Hier können wir beliebig viele Dimensionen aufziehen (was aber ab der dritten Dimension ein wenig anstrengend zu denken ist).

Veranschaulichen wie es in einem Beispiel: Unsere Adresse von oben ist nur eine Adresse. Wenn ich nun mehrere Adressen speichern möchte, kann ich dies über mehrdimensionale Arrays erreichen. Dazu wird zum ersten Index einfach noch ein weiterer aufgenommen.

PHP-Quellcode: Beispiel mehrdimensionales Array
<?php
$adresse[0]['vorname']   = "Axel";
$adresse[0]['nachname']  = "Pratzner";

$adresse[1]['vorname']   = "Sabine";
$adresse[1]['nachname']  = "Musterfrau";

$adresse[2]['vorname']   = "Fritz";
$adresse[2]['nachname']  = "Müller";

echo "<pre>";
print_r ( $adresse );
?>

Zum direkten Ansprechen müssen nun alle Indizes angegeben werden:

echo $adresse['2']['vorname'];

Aufgabe:

erstellen Sie ein mehrdimensionales Array, das folgende Daten enthält:

Land Hauptstadt
Land Fluss

für BRD, Schweiz, USA, Marokko

Sortieren von mehrdimensionalen Arrays - array_multisort

Diese Funktion ist anspruchsvoll, aber machbar. Die ausführliche Beschreibung der Arbeitsweise der Funktion array-multisort ist bei php.net beschrieben.

Erster Schritt ist, dass man ein mehrdimensionales Array hat - hier Termine von „funky Bands“.

PHP-Quellcode: Beispiel mehrdimensionales Array
<?php
$termin[] = array('Datum' => 20221208, 
                  'Ort'   => "Wangen", 
                  'Band'  => "cOoL RoCk oPaS");

$termin[] = array('Datum' => 20220311, 
                  'Ort'   => "Stuttgart", 
                  'Band'  => "Die Hosenbodenband");

$termin[] = array('Datum' => 20220628, 
                  'Ort'   => "Tübingen", 
                  'Band'  => "flying socks");

$termin[] = array('Datum' => 20220628, 
                  'Ort'   => "Stuttgart", 
                  'Band'  => "flying socks");

echo "<pre>";
print_r ( $termin );
?>

Im nächsten Schritt wird nur für die Sortierung das mehrdimensionale Array aufgeteilt.

PHP-Quellcode: für Sortierung aufteilen
foreach ($termin as $nr => $inhalt)
{
    $band[$nr]  = strtolower( $inhalt['Band'] );
    $ort[$nr]   = strtolower( $inhalt['Ort'] );
    $datum[$nr] = strtolower( $inhalt['Datum'] );
}

Und dann kann das eigentliche Sortieren durchgeführt werden. Hier gibt es verschiedene Möglichkeiten

PHP-Quellcode: Sortierung mehrdimensionales Array
// sortieren nach Datum
array_multisort($datum, SORT_ASC, $termin);

// sortieren nach Datum absteigend
array_multisort($datum, SORT_DESC, $termin);

// Sortierung nach Ort aufsteigend
array_multisort($ort, SORT_ASC, $termin);

// Sortierung nach Band aufsteigend
array_multisort($band, SORT_ASC, $termin);

// sortieren nach Datum und Ort
array_multisort($datum, SORT_ASC, $ort, SORT_ASC, $termin);

Tipp am Rande: Um nicht ein Chaos beim Sortieren zu bekommen, da nach Groß- und Kleinschreibung sortiert wird (ein großes D kommt vor dem kleinen a :) - einfach im zweiten Schritt alles klein machen:

PHP-Quellcode: Fallstrick umgehen bei Sortierung mehrdimensionales Array
foreach ($termin as $nr => $inhalt)
{
    $band[$nr]  = strtolower( $inhalt['Band'] );
    $ort[$nr]   = strtolower( $inhalt['Ort'] );
    $datum[$nr] = strtolower( $inhalt['Datum'] );
}

Und nun die Einzelteile am Stück mit Sortierung auf Datum absteigend

PHP-Quellcode: Beispiel Anwendung mehrdimensionales Array
<?php
$termin[] = array('Datum' => 20221208, 
                  'Ort'   => "Wangen", 
                  'Band'  => "cOoL RoCk oPaS");

$termin[] = array('Datum' => 20220311, 
                  'Ort'   => "Stuttgart", 
                  'Band'  => "Die Hosenbodenband");

$termin[] = array('Datum' => 20220628, 
                  'Ort'   => "Tübingen", 
                  'Band'  => "flying socks");

$termin[] = array('Datum' => 20220628, 
                  'Ort'   => "Stuttgart", 
                  'Band'  => "flying socks");

echo "<pre>";
print_r ( $termin );

foreach ($termin as $nr => $inhalt)
{
    $band[$nr]  = strtolower( $inhalt['Band'] );
    $ort[$nr]   = strtolower( $inhalt['Ort'] );
    $datum[$nr] = strtolower( $inhalt['Datum'] );
}

array_multisort($datum, SORT_DESC, $termin);

print_r ( $termin );
?>

Wenn Sie einen Fehler finden, bitte mitteilen (egal ob Schreibfehler oder inhaltlicher Fehler).

Mit Maus fehlerhafte Stelle markieren und übernehmen mit folgendem Button:



(kann angegeben werden)

Nach Absenden kommt hier Feedback! Bitte nicht doppelt absenden. Danke.

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

unsere Videos bestellen

Unsere Videos und eBooks bestellen.

Spenden

Sie können uns eine Spende über PayPal zukommen lassen.

Weiterempfehlungen

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Bücher über Amazon

Bestellen Sie Bücher über folgende Links bei Amazon:

Fehler melden

Vielen Dank für Ihre Hilfe