PHP-Einfach.de
  • PHP Tutorial
  • MySQL Tutorial
  • Für Fortgeschrittene
  • Webhosting
  • Forum

Arrays

10. Februar 2020
  1. Home
  2. »
  3. PHP Tutorial
  4. »
  5. Arrays

Arrays sind ein wichtiges Konzept in PHP. Ein Array ist eine geordnete Liste. Beispielsweise eine Liste von Zahlen oder eine Liste von Texten (Strings). Wir können mittels einem Array beispielsweise die Wochentage in einer Liste zusammenfassen, oder alle Benutzer unsere Seite. Im folgenden lernt ihr, wie ihr Arrays definiert, wie ihr mit diesen arbeiten und welche wichtigen und nützlichen Funktionen existieren.

Siehe ebenfalls die drei nachfolgenden Artikel zu Über die Elemente eines Arrays iterieren, foreach-Schleife und Arrays sortieren.

Inhaltsverzeichnis

  • 1 Arrays definieren
  • 2 Assoziative Arrays definieren
  • 3 Weitere Werte einem Array hinzufügen
  • 4 Arrays in Strings konvertieren
  • 5 Strings in Arrays konvertieren
  • 6 Mehrdimensionale Arrays definieren
  • 7 Arrays durchsuchen
  • 8 Über die Elemente eines Arrays iterieren
  • 9 Arrays sortieren
  • 10 Nützliche Array Funktionen

Arrays definieren

Bisher konnte jede Variable nur einen Wert speichern. In einem Array können nun aber beliebig viele Werte gespeichert werden, auch von unterschiedlichen Typen. So kann ein PHP Array z.B. eine Zeichenkette (String/Text), eine Ganzzahl und eine Zahl mit Kommastellen enthalten und auf jeden dieser Werte kann man separat zugreifen.

Das hört sich jetzt alles recht kompliziert an, ist aber ganz einfach, darum hier ein Beispiel:

<?php
$wochentage = array("Sonntag","Montag","Dienstag",
"Mittwoch","Donnerstag","Freitag","Samstag");
echo $wochentage[1];
?>

Einem PHP Array wird ganz normal ein Variablennamen zugeordnet, hier wochentage, allerdings erfolgt die Zuweisung der Daten nicht einfach durch das Gleichheitszeichen, sondern danach kommt noch der Befehl: array();.
In diesem Befehl sind jetzt die verschiedenen Werte gespeichert, bei uns die ausgeschriebenen Wochentage.

Das Zugreifen auf solch einen Wert ist auch relativ simpel:

1
2
3
<?php
echo $wochentage[1];
?>

Ausgabe: Montag

Wir geben wir zuerst wieder den Variable-Namen (wochentage) an und danach das Element bzw. den Wert, auf das wir zugreifen möchten.
Ein Array hat dabei die enthaltenen Werte durchnummeriert, und fängt bei 0 an zu zählen.
Also mit $wochentage[0]; würden wir den Wert Sonntag erhalten, Montag hat die Nummer (bzw. den Index) 1 und so weiter.

Assoziative Arrays definieren

Bei großen Arrays wird es irgendwann umständlich zu wissen, welche Nummer/Index zu welchem Wert gehört, darum gibt es assoziative Arrays. Das heißt, man kann für einen Wert einen Schlüssel (auch Key genannt) zuweisen, dies kann z.B. eine andere Zeichenkette sein. Die Zuweisung erfolgt per =>

<?php
$wochentage = array(
"so" => "Sonntag",
"mo" => "Montag",
"di" => "Dienstag",
"mi" => "Mittwoch",
"do" => "Donnerstag",
"fr" => "Freitag",
"sa" => "Samstag");

echo $wochentage["mo"];
?>

Dies ist wieder ein Array mit unseren Namen der Wochentage. Dabei wurde dem Schlüssel so der Wert Sonntag zugewiesen, dem Schlüssel mo dem Wert Montag und so weiter.

Der Vorteil ist, dass man jetzt bequemer auf das Array zugreifen kann:

1
echo $wochentage["mo"];

Ausgabe: Montag

Anstatt jetzt die Nummer/Index des Elementes anzugeben, gibt man hier den Schlüssel für das Element an, also so für Sonntag, mo für Montag und sa für Samstag.

Selbstverständlich kann man nachträglich auch Werte in einem Array verändern:

<?php
$wochentage = array(
"so" => "Sonntag",
"mo" => "Montag",
"di" => "Dienstag",
"mi" => "Mittwoch",
"do" => "Donnerstag",
"fr" => "Freitag",
"sa" => "Samstag");

$wochentage["mo"] = "Monday";
echo $wochentage["mo"];
?>

Ausgabe: Monday

Weitere Werte einem Array hinzufügen

Ihr könnt einem Array bequem weitere Werte hinzufügen. Dies geht mittels [] hinter dem Array-Namen:

<?php
$mitarbeiter = array("Bob","Peter");
$mitarbeiter[] = "Lisa";

echo $mitarbeiter[2];
?>

Ausgabe: Lisa

Mit $mitarbeiter[] wird automatisch ein neues Element in unserem Array erstellt, und diesem wird der Wert Lisa zugewiesen.

Dies lässt sich ebenfalls auch auf leere Arrays anwenden:

<?php
$mitarbeiter = array();
$mitarbeiter[] = "Bob";
$mitarbeiter[] = "Peter";
$mitarbeiter[] = "Lisa";

echo $mitarbeiter[0];
?>

Hier wird zuerst ein leeres Array erstellt und danach werden die Mitarbeiter hinzugefügt. Wie viele Elemente ihr einem Array hinzufügen möchtet, ist euch überlassen.

Mit assoziativen PHP Arrays funktioniert dies ähnlich, aber wir müssen den neuen Schlüssel mit angeben:

<?php
$mitarbeiter = array(
   "Bob" => "Bob Meier",
   "Peter" => "Peter Schröder");
$mitarbeiter["Lisa"] = "Lisa Müller";

echo $mitarbeiter["Lisa"];
?>

Ausgabe: Lisa Müller

Sollte der Schlüssel Lisa bereits vergeben sein, dann wird kein neuer Eintrag  erstellt, sondern der vorhandene Eintrag wird überschrieben.

Arrays in Strings konvertieren

Eine sehr nützliche Funktion ist implode($trennzeichen, $array) . Hiermit könnt ihr die Elemente eines Arrays zu einem String verbinden. Mittels der Variable $trennzeichen könnt ihr spezifizieren, welches Verbindungselement zwischen den Elementen erscheinen soll. Diese Funktion ist sehr nützlich, um so z.B. formatierte Listen auszugeben. Gerade mit anderen Array-Funktionen, z.B. zum Sortieren des Arrays, ist dies sehr nützlich.

<?php
$namen = array("Paul", "Max", "Hans");

echo "Namen per Komma trennen: <br>";
$namenStr = implode(", ", $namen);
echo $namenStr; 

echo "<br><br>";
echo "Ein Name pro Zeile: <br>";
echo implode("<br>", $namen);

 

Strings in Arrays konvertieren

Im Gegensatz zu implode() lässt sich mittels explode($trennzeichen, $text) ein Text (String) in ein Array konvertieren. Hierbei wird der Text an allen Vorkommen von $trennzeichen getrennt.

<?php
$text = "Paul,Max,Hannes";
$namen = explode(",", $text ); //Konvertierung des Strings in ein Array
echo "<pre>"; var_dump($namen); echo "</pre>"; //Formartierte Ausgabe des Arrays


//Ersetze die 1. Person durch neuen Namen
$namen[1] = "Lisa";

//Verwandel das Array zurück in einen String
$text = implode(", ", $namen);
echo $text;

 

Mehrdimensionale Arrays definieren

In einem Array kann man ein weiteres Array speichern. Und in diesem Array ein weiteres Arrray usw. Solche Arrays nennt man dann mehrdimensionale Arrays. Die Dimension gibt dabei an, wie Tief diese Verschachtelung geht. Ein normales Array wäre ein 1-dimensionales Array, wenn jetzt in dem Array ein weiteres Array gespeichert ist, ist dies ein 2-dimensionales Array.

Dafür hier ein Beispiel:

<?php
$mitarbeiter = array(
  array("Klaus", "Zabel"),
  array("Arnie", "Meier"),
  array("Willi", "Brand")
);

//Daten ausgeben
echo "Vorname: ".$mitarbeiter[0][0];
echo " Nachname: ".$mitarbeiter[0][1];
?>

Ausgabe: Vorname: Klaus Nachname: Zabel

Wie wir sehen, gibt man jetzt nicht nur einen Index an, sondern zwei. Der erste Index gibt an, welchen Mitarbeiter wir aus der Liste haben möchte, und der zweite Index ob wir den Vornamen oder den Nachnamen ausgeben möchten.

Normale Arrays und assoziativen Arrays lassen sich gut miteinander kombinieren:

<?php
$mitarbeiter = array();
$mitarbeiter[] = array("Vorname"=>"Klaus",
                       "Nachname"=>"Zabel");

$mitarbeiter[] = array("Vorname"=>"Arnie",
                       "Nachname"=>"Meier");

$mitarbeiter[] = array("Vorname"=>"Willi",
                       "Nachname"=>"Brand");

//Daten ausgeben
echo "Vorname: ".$mitarbeiter[0]["Vorname"];
echo " Nachname: ".$mitarbeiter[0]["Nachname"];
?>

Da wir jetzt in einem normalem Array ein assoziatives Array (also eins mit Schlüssel) speichern, müssen wir als zweiten Wert auch den Schlüssel für Vor/Nachname angeben.

Dies geht natürlich auch mit noch mehr Dimensionen, z.B. so:

<?php
$mitarbeiter = array();
$mitarbeiter["Klaus"]["Vorname"] = "Klaus";
$mitarbeiter["Klaus"]["Nachname"] = "Zabel";
$mitarbeiter["Klaus"]["Kinder"][] = "Klaus-Junior";
$mitarbeiter["Klaus"]["Kinder"][] = "Kind2";

//Daten ausgeben
echo "Vorname: ".$mitarbeiter["Klaus"]["Vorname"];
echo " Nachname: ".$mitarbeiter["Klaus"]["Nachname"];
echo "<br> Er hat ";
echo count($mitarbeiter["Klaus"]["Kinder"])." Kinder";

//Ausgabe von Kind1:
//$mitarbeiter["Klaus"]["Kinder"][0];

echo "<br> Kinder: <br>";
foreach($mitarbeiter["Klaus"]["Kinder"] AS $name) {
   echo $name."<br>";
}
?>

Dies ist schon etwas schwerer zu verstehen, aber wenn man es verstanden hat, sollte es eigentlich keine weiteren Fragen zu Arrays geben.

Also zuerst haben wir wieder unser Array mit dem Mitarbeiter Klaus. Dabei benutzen wir diesmal gleich ein assoziatives Array.
Für Klaus wurde jetzt der Vorname und der Nachname gespeichert. Unter dem Schlüssel Kinder fügen wir jetzt ein weiteres Array hinzu, wobei jedes Element dieses Arrays den Namen eines Kindes von ihm enthält. Dieses Array mit den Kindernamen können wir ganz normal per foreach ausgeben.

Arrays durchsuchen

Mittels der Funktion in_array($suche,$array) lässt sich überprüfen ob ein Wert in einem Array vorhanden ist.:

<?php
$mitarbeiter = array("Bob","Peter","Lisa");
$name = "Bob";
if(in_array($name,$mitarbeiter)) {
   echo "Der Name $name ist in dem Array enthalten";
}
?>

Im obigen Beispiel wird überprüft, ob Bob in dem Mitarbeiter-Array vorhanden ist, wenn ja, gibt die Funktion true zurück, und die if-Anweisung wird entsprechend ausgeführt.

Bei assoziativen Arrays kann man mittels array_key_exists($key, $array)  überprüfen, ob ein Schlüssel in dem Array existiert:

<?php
$mitarbeiter = array("Bob" => "Baumeister", "Klaus" => "Muster");
$key = "Bob";

if(array_key_exists($key, $mitarbeiter)) {
  echo "Das Element $key hat den Wert: ".$mitarbeiter[$key];
} else {
  echo "Das Array hat keinen Schlüssel $key";
}
?>

Über die Elemente eines Arrays iterieren

Siehe Artikel Über die Elemente eines Arrays iterieren.

Mittels der Funktion count($array) lässt sich die Anzahl der Elemente eines Arrays bestimmen. Somit lässt sich eine entsprechende for-Schleife nutzen um alle Elemente zu durchlaufen. Alternativ kann ebenfalls die foreach-Schleife genutzt werden. Für assoziative Arrays greift man für gewöhnlich auf eine foreach-Schleife zurück, da dort keine aufsteigenden Indizes mehr existieren.

<?php
$namen = array("Klaus", "Anna", "Dieter");

echo "<br> Durchlaufen des Arrays mittels for-Schleife: ";
for($i=0; $i<count($namen); $i++) {
  echo $namen[$i].", ";
}

echo "<br> Durchlaufen des Arrays mittels foreach-Schleife: ";
foreach($namen AS $name) {
  echo $name.", ";
}
?>

Arrays sortieren

Siehe Artikel Arrays sortieren.

Arrays lassen sich mittels der Funktion sort() aufsteigend sortieren (a nach z). Mittels der Funktion rsort() lässt sich ein Array absteigend sortieren (z nach a).

<?php
$namen = array("Klaus", "Dieter", "Anna", "Melissa", "arne");

sort($namen);
echo implode(", ", $namen);
?>

Im obigen Script ist die Ausgabe: Anna, Dieter, Klaus, Melissa, arne.

Es mag überraschen, dass arne am Ende des Arrays steht. Dies kommt durch den Kleinbuchstaben, diese werden erst nach den Großbuchstaben sortiert. Möchtet ihr, dass arne nach Anna sortiert wird, müsst ihr die Funktion natcasesort($namen) verwenden.

Nützliche Array Funktionen

Für das Arbeiten mit Arrays gibt es eine Reihe von nützlichen Array Funktionen . Im folgenden findet ihr eine Auflistung der Wichtigsten:

  • array_key_exists($key, $array) - Überprüft, ob der Schlüssel $key im $array existiert.
  • count($array) - Gibt die Anzahl der Elemente im Array zurück.
  • in_array($suchwert, $array) - Überprüft, ob der Wert $suchwert im $array existiert.
  • sort($array) - Sortiert ein Array aufsteigend, vom kleinsten zum größten Wert (A -> Z).
  • rsort($array) - Sortiert ein Array absteigend, vom größten zum kleinsten Wert (Z -> A).
  • shuffle($array) - Mischt zufällig die Elemente des Arrays.
Autor: Nils Reimers
Zurück: for-Schleife
Weiter: Über die Elemente eines Arrays iterieren

PHP Tutorial

  • Installation
  • Webspace
  • Erste Schritte
  • Text ausgeben per echo
  • Kommentare
  • Variablen
  • Rechnen mit Variablen
  • $_GET und $_POST
  • if-Anweisungen
  • Vergleichsoperatoren
  • Logische Operatoren
  • Übungsaufgaben
  • while-Schleife
  • for-Schleife
  • Arrays
    • Elemente durchlaufen
    • foreach-Schleife
    • Arrays sortieren
  • Dateien lesen
  • Dateien schreiben
  • Datum und Uhrzeit
  • E-Mails mit PHP versenden
  • Suchen und Ersetzen
  • Sessions
  • Eigene Funktionen
  • Andere PHP Dateien einbinden
  • Dateiupload
  • Cookies
  • Konstanten
  • Reguläre Ausdrücke
  • Überblick: Wichtige PHP Funktionen
Mit freundlicher Unterstützung von:
  • Punkt191 Werbeagentur
  • CasinoAndy Finland
  • Casinoohnelizenz.info
  • Cryptocasinomaster.com
  • CasinoHEX.at
  • inkedin.com

Hoster – Geringste Ausfallzeit

  1. webgo Ø 1 Min.
  2. Linevast Ø 2 Min.
  3. netcup Ø 3 Min.
  4. All-Inkl.com Ø 6 Min.
  5. checkdomain Ø 8 Min.
  6. dogado Ø 17 Min.
  7. bplaced Ø 17 Min.
  8. Contabo Ø 25 Min.
  9. Hetzner Ø 49 Min.
  10. ONE.com Ø 62 Min.
» Mehr erfahren

Impressum | Datenschutz | Auf PHP-Einfach.de werben

© PHP-Einfach.de 2003 - 2023

Cookie-Zustimmung verwalten
Um dir ein optimales Erlebnis zu bieten, verwenden wir Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wenn du diesen Technologien zustimmst, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn du deine Zustimmung nicht erteilst oder zurückziehst, können bestimmte Merkmale und Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Anbieter verwalten Lese mehr über diese Zwecke
Einstellungen ansehen
{title} {title} {title}