6. Unterrichtsblock

PHP Arrays

Das Wort „Array“ bedeutet auf deutsch „Reihe“ und steht in Programmiersprachen für eine Variable mit einer Reihe an Werten.

Ein Array speichert mehrere Werte in einer einzigen Variablen:

<?php
$autos = array("Volvo", "BMW", "Toyota");
echo "Ich mag " . $autos[0] . ", " . $autos[1] . " und " . $autos[2] . ".";

/*
  Ein Array kann viele Werte unter einem einzigen Namen enthalten
  und man kann auf die Werte zugreifen, indem man eine Indexnummer verweist.
*/
?>

Erstellen eines Arrays in PHP

In PHP wird die array()Funktion verwendet, um ein Array zu erstellen:

array();

In PHP gibt es drei Arten von Arrays:

  • Indexbasierte Arrays – Arrays mit einem numerischen Index
  • Assoziative Arrays – Arrays mit benannten Schlüsseln
  • Mehrdimensionale Arrays – Arrays, die ein oder mehrere Arrays enthalten

Bestimmung der Länge eines Arrays – durch die Funktion count()

Die count()Funktion wird verwendet, um die Länge (die Anzahl der Elemente) eines Arrays zurückzugeben:

<?php
$autos = array("Volvo", "BMW", "Toyota");
echo count($autos);
?>

Aufgabe

Probiere o.g. Code-Beispiele aus, um ein Gefühl dafür zubekommen

Vollständige PHP-Array-Referenz

Eine vollständige Referenz aller Array-Funktionen existiert hier PHP-Array-Referenz.

PHP indexbasierte Arrays

Es gibt zwei Möglichkeiten, indexbasierte Arrays zu erstellen.

/*
Der Index kann automatisch vergeben werden (Index beginnt immer bei 0):
*/
$autos = array("Volvo", "BMW", "Toyota");


// Oder der Index kann manuell vergeben werden:
$autos[0] = "Volvo";
$autos[1] = "BMW";
$autos[2] = "Toyota";

Das folgende Beispiel erstellt ein indexbasiertes Array namens $autos, weist ihm drei Elemente zu und gibt dann einen Text aus, der die Array-Werte enthält:

<?php
$autos = array("Volvo", "BMW", "Toyota");
echo "Ich mag " . $autos[0] . ", " . $autos[1] . " und " . $autos[2] . ".";
?>

Aufgabe

Probiere o.g. Code-Beispiele aus

Schleife durch ein indexbasiertes Array laufen lassen

Um alle Werte eines indexbasierten Arrays zu durchlaufen und auszugeben, kann man eine for-Schleife verwenden:

<?php
$autos = array("Volvo", "BMW", "Toyota");
$arrlaenge = count($autos); // Speichern der Länge in einer Variablen

for($x = 0; $x < $arrlaenge; $x++) {
  echo $autos[$x];
  echo "<br>";
}
?>

Aufgabe

Baue o.g. Code nach

Assoziative PHP-Arrays

Das Wort „Assioziativ“ bedeutet auf deutsch „Verknüpfbarkeit“ und meint in diesem Zusammenhang die Verknüpfung zwischen Schlüssel und Wert als einheitliches Paar innerhalb des Arrays.

Assoziative Arrays sind daher Arrays, die benannte Schlüssel verwenden, die man ihnen zuweist.
=> ist hierbei das Trennzeichen zwischen einem einzelnen Schlüssel und dem dazugehörigen Wert und ein , Komma ist wiederum das Trennzeichen zwischen den einzelnen Schlüssel/Wert-Paaren.

// Es gibt zwei Möglichkeiten, ein assoziatives Array zu erstellen: 
$alter = array("Peter"=>"35", "Anja"=>"37", "Martin"=>"43");


// oder
$alter['Peter'] = "35";
$alter['Anja'] = "37";
$alter['Martin'] = "43";

Die benannten Schlüssel können dann in einem Skript verwendet werden:

<?php
$alter = array("Peter"=>"35", "Anja"=>"37", "Martin"=>"43");
echo "Peter ist " ???????????? " Jahre alt.";
?>

Aufgabe

Vervollständige o.g. Code so, dass er das Alter von Peter korrekt in den String integriert.

Schleife durch ein assoziatives Array laufen lassen

Um alle Werte eines assoziativen Arrays zu durchlaufen und auszugeben, kann eine foreach-Schleife verwendet werden:

<?php
$alter = array("Peter"=>"35", "Anja"=>"37", "Martin"=>"43");

foreach($alter as $schluessel => $wert) {
  echo "Schlüssel=" . $schluessel . ", Wert=" . $wert;
  echo "<br>";
}
?>

=> ist hierbei das Trennzeichen/Seperator für assoziative Arrays. Im Kontext dieser foreach-Schleife weist das => Trennzeichen der Variablen $schluessel den Schlüssel des Arrays und der Variablen $wert den dazugehörigen Wert zu.

Aufgabe

Gib das Ergebnis des o.g. Codes aus

PHP Mehrdimensionale Arrays

Oben auf der Seite wurden Arrays beschrieben, die eine einzelne Liste von Schlüssel/Wert-Paaren dartellen. Manchmal möchte man jedoch Werte mit mehr als einem Schlüssel speichern. Dafür gibt es mehrdimensionale Arrays.

Ein mehrdimensionales Array ist ein Array, das ein oder mehrere Arrays enthält.

PHP unterstützt mehrdimensionale Arrays, die zwei, drei, vier, fünf oder mehr Ebenen tief sind. Arrays mit einer Tiefe von mehr als drei Ebenen sind jedoch für die meisten Benutzer schwer zu verwalten.

Die Dimension eines Arrays gibt die Anzahl der Indizes an, die man benötigt, um ein Element auszuwählen.

  • Für ein zweidimensionales Array benötiget man zwei Indizes, um ein Element auszuwählen
  • Für ein dreidimensionales Array benötiget man drei Indizes, um ein Element auszuwählen
  • u.s.w.

PHP – Zweidimensionale Arrays

Ein zweidimensionales Array ist ein Array von Arrays (ein dreidimensionales Array ist ein Array von Arrays von Arrays).

Als Beispiel hilft ein Blick auf die folgende Tabelle:

NameAuf LagerVerkauft
Volvo2218
BMW1513
Saab52
Land Rover1715

Man kann die Daten aus der obigen Tabelle wie folgt in einem zweidimensionalen Array speichern:

$autos = array (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
);

Jetzt enthält das zweidimensionale $autos-Array vier weitere Arrays und hat daher zwei Indizes: Zeile und Spalte. Um Zugriff auf die Elemente des Arrays $autos zu erhalten, muss man auf die beiden Indizes (Zeile und Spalte) verweisen:

<?php
echo $autos[0][0].": Auf Lager: ".$autos[0][1].", Verkauft: ".$autos[0][2].".<br>";
echo $autos[1][0].": Auf Lager: ".$autos[1][1].", Verkauft: ".$autos[1][2].".<br>";
echo $autos[2][0].": Auf Lager: ".$autos[2][1].", Verkauft: ".$autos[2][2].".<br>";
echo $autos[3][0].": Auf Lager: ".$autos[3][1].", Verkauft: ".$autos[3][2].".<br>";
?>

Aufgabe

Gib das Ergebnis des o.g. Codes aus

Es kann auch eine for-Schleife in eine andere for-Schleife integriert werden, um die Elemente des $autos-Arrays zu erhalten (man muss jedoch immer auf die beiden Indizes verweisen):

<?php
for ($zeile = 0; $zeile < 4; $zeile++) {
  echo "<p><b>Reihe Nr. $zeile</b></p>";
  echo "<ul>";
  for ($spalte = 0; $spalte < 3; $spalte++) {
    echo "<li>".$autos[$zeile][$spalte]."</li>";
  }
  echo "</ul>";
}
?>

Aufgabe

Gib die Ergebnisse des o.g. Codes aus

PHP – Sortierfunktionen für Arrays

Die Elemente in einem Array können in alphabetischer oder numerischer Reihenfolge, absteigend oder aufsteigend sortiert werden.

Folgende PHP-Array-Sortierfunktionen existieren:

  • sort()– Arrays in aufsteigender Reihenfolge sortieren
  • rsort()– Arrays in absteigender Reihenfolge sortieren
  • asort()– assoziative Arrays in aufsteigender Reihenfolge nach dem Wert sortieren
  • ksort()– assoziative Arrays in aufsteigender Reihenfolge nach dem Schlüssel sortieren
  • arsort()– assoziative Arrays in absteigender Reihenfolge nach dem Wert sortieren
  • krsort()– assoziative Arrays in absteigender Reihenfolge nach dem Schlüssel sortieren

Array in aufsteigender Reihenfolge sortieren – sort()

Das folgende Beispiel sortiert die Elemente des $autos-Arrays in aufsteigender alphabetischer Reihenfolge:

<?php
$autos = array("Volvo", "BMW", "Toyota");
sort($autos);

// Es folgt eine Schleife, um die Autos auszugeben
?>

Aufgabe

Baue eine Schleife, die o.g. Autos alphabetisch sortiert ausgibt

Das folgende Beispiel sortiert die Elemente des $nummern-Arrays in aufsteigender numerischer Reihenfolge:

<?php
$nummern = array(4, 6, 2, 22, 11);
sort($nummern);

// Es folgt eine Schleife, um die Zahlen auszugeben
?>

Aufgabe

Baue eine Schleife, die o.g. Zahlen sortiert ausgibt. Einmal absteigend und einmal aufsteigend.

Assioziatives Array sortieren (aufsteigend), nach Wert – asort()

Das folgende Beispiel sortiert ein assoziatives Array in aufsteigender Reihenfolge nach dem Wert:

<?php
$alter = array("Peter"=>"35", "Anja"=>"37", "Martin"=>"43");
asort($alter);

// Es folgt eine Schleife, um die Werte auszugeben
?>

Aufgabe

Baue eine Schleife, die o.g. Schlüssel-Wert-Paare nach Wert sortiert ausgibt. Einmal absteigend und einmal aufsteigend.

Assioziatives Array sortieren (aufsteigende Reihenfolge), nach Schlüssel – ksort()

Das folgende Beispiel sortiert ein assoziatives Array in aufsteigender Reihenfolge nach dem Schlüssel:

<?php
$alter = array("Peter"=>"35", "Anja"=>"37", "Martin"=>"43");
ksort($alter);

// Es folgt eine Schleife, um die Werte auszugeben
?>

Aufgabe

Baue eine Schleife, die o.g. Schlüssel-Wert-Paare nach Schlüssel sortiert ausgibt. Einmal absteigend und einmal aufsteigend.

Übungsaufgaben

1. Aufgabe

Baue ein Schleife, die Schlüssel/Wert-Paare des Arrays $autos in einzelnen <div> Containern ausgibt. Die Container sollen im Grid-Layout in 3 Spalten angeordnet sein.