Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 Unit Test Generator
 TLD Liste
 Webkatalog‑Verzeichnis

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

PHP Array – Was ist ein Array?

Sie befinden sich: Home > Php > PHP Array – Was ist ein Array?

Ein Array ist ein Datentyp, wo Sie beliebig viele Werte abspeichern können. Während in einer Variable immer ausschließlich ein einzelner Datentyp enthält, kann in einem Array variabel eine große Anzahl verschiedene Werte enthalten. Das Verhältnis zwischen einer variabel und ein Array können Sie vergleichen mit zum Beispiel: das Fahrrad und ein Auto oder ein Flugzeug.

Die Variabel ist ähnlich wie ein Fahrrad, das Fahrrad kann eine einzelne Person befördern. Natürlich kann das Fahrrad von unterschiedlichen Personen genutzen werden. So ist es bei der Variabel, es kann bei einem Script mehrere unterschiedliche Werte im Ablauf des Skriptes einen Wert der Variabel zugeordnet werden. Es besteht aber immer wieder die Möglichkeit, dass ausschließlich ein Wert in der Variabel gespeichert werden kann.

Wenn Sie den Vergleich zu einem Array ziehen, müssten Sie das Array als Bus oder Flugzeug ansehen. Ein Bus oder Flugzeug kann mehrere Personen transportieren. Ein Array kann mehrere Werte über die Laufzeit eines Skriptes transportieren. Um ein Array zu verwenden, müssen Sie einen Schlüssel definieren, der einen gewissen Wert in den einzelnen Array speichert. Wenn kein Schlüssel definiert wurde in den Array, so wird automatisch von Null, um eins hoch gezählt. Wenn sie einen einzelnen Wert ausgeben möchte, ist es erforderlich, dass der Schlüssel, des Array angegeben wird. Es besteht zusätzlich die Möglichkeit, ein Array in mehrere Ebenen zu verschachteln.

Die Indizierung der einzelnen Felder kann entweder fortlaufend von 0 - n geschehen, oder assoziativ. Eine allgemeine Fehlerquelle, auf die auch erfahrene Programmierer immer wieder hereinfallen, ist der Umstand, dass ein Array mit 10 Feldern mit dem Index 0 beginnt, und mit 9 endet.

 

Genereller ausgedrückt, ein Array mit n Feldern hat als maximalen Feldindex n-1. Diese Fehlerquelle können Sie umgehen, indem Sie ein assoziatives Indiz vergeben, das bedeutet, dass der Index selbst ein Name oder ein Charakterstring sein kann.

Dabei ist zu beachten, dass selbst bei Verwendung dieser Zuordnung, intern mit Feldnummern gearbeitet wird. Dies liegt im Speichermodell begründet. Um den Inhalt eines Feldes bearbeiten oder abfragen zu können, wird ein Zeiger angelegt, der auf dem entsprechenden Feld des Arrays zeigt.

Ein solcher Pointer kann als Hilfsmittel angesehen werden, um mit Arrays arbeiten zu können. Da alle Elemente eines Arrays im Speicher hintereinanderliegen, muss der Zeiger immer einen Speicherblock verschoben werden, um auf das nächste Element zugreifen zu können, dabei wird immer vom ersten Element aus inkrementiert.

Außerdem lassen sich Arrays einfacher mit Schleifen verarbeiten.

Beispiel zeigt diese Vorteile:

<?php
$wert_eins = 1;
$wert_zwei = 2;
$wert_drei = 3;
$wert_vier = 4;

/*
* Um den Inhalt der vier Varibalen
* wiederzugeben muss nun jede erneut
* angespochen werden
*/

echo $wert_eins.'<br>';
echo $wert_zwei.'<br>';
echo $wert_drei.'<br>';
echo $wert_vier.'<br>';
?>

Ausgabe:

1
2
3
4

Beispiel mit ein array() und foreach-Schleife:

<?php
/*
* Ein Array vereinfacht das
* oben angeführte Beispiel erheblich
*/

$aArray =[0 , 1 , 2 , 3];
foreach( $aArray as $iAusgabe ){
   echo $iAusgabe.'<br>';
}
?>

Ausgabe des Arrays:

0
1
2
3

Erklärung: 

Der PHP-Code definiert ein Array, das aus vier Elementen besteht und lässt es dann in einer Schleife durchlaufen. Der foreach-Befehl wird verwendet, um jedes Element des Arrays aufzurufen und auszugeben. Jedes Element wird dann in einer neuen Zeile ausgegeben, was durch das Zeichen „<br>" am Ende des echo-Befehls erreicht wird.

 

Was sind mehrdimensionale Arrays?

„Wenn die Rede von einem mehrfachen Array ist“ – wird von ein multidimensional Array in PHP gesprochen, welches mehre Ebenen von Datenelemente enthält. Jede Ebene kann wiederum ein Array sein, das mehrere Elemente enthält. Jede Ebene wird von einem Schlüsselwort oder einer Nummer indexiert, das als „Schlüssel“ bezeichnet wird. Dadurch können mehrere Arrays in einem Array gespeichert werden. 

Diese Art von Array ist sehr flexibel und ermöglicht es, komplexe Datenstrukturen zu erstellen und zu verwalten. Es können auch dynamische Arrays erzeugt werden, die sich aufgrund der Anzahl der Elemente in einem bestimmten Array ändern.

Es ist möglich, einzelne Elemente eines Arrays mithilfe von Schlüsselwörtern oder Indizes abzurufen. Die Syntax für das Abrufen von Elementen in einem multidimensionalen Array ist jedoch etwas komplexer. Zuerst muss der Schlüssel für jede Ebene identifiziert werden, bevor Sie auf die Elemente zugreifen können.

Beispiel mit ein mehrdimensionalen array() und einer for-Schleife

<?php
/*
* Initialisiere und weise Werte dem Array zu
*/
$aWertNeu =[];
$aWertNeu[] = 0;
$aWertNeu[] = 1;
$aWertNeu[] = 2;
$aWertNeu[] = 3;

for( $key = 0 ; $key < count($aWertNeu) ; $key++){
   echo $aWertNeu[$key].'<br>';
}
?>

Ausgabe:

0
1
2
3

Erklärung:

In dem oben stehenden PHP-Code wird ein Array mit dem Namen $aWertNeu erstellt, das mehrere Werte des Typs Integer speichert, nämlich 0, 1, 2 und 3. Diese Zahlen werden nacheinander dem Array zugewiesen, wobei sie durch die Verwendung von eckigen Klammern ohne spezifischen Index automatisch an die nächste verfügbare Position im Array angehängt werden.

Anschließend wird eine Schleife verwendet, um die Werte des Arrays auszugeben. Die Schleife benutzen einen Integer $key als Schleifenvariable, der von 0 startet und bis zur Anzahl der Elemente im Array läuft, die mit der Funktion count($aWertNeu) ermittelt wird. Für jedes Durchlaufen der Schleife wird der Wert von $aWertNeu[$key] ausgegeben. Dieser Zugriff erfolgt wiederum durch die Verwendung eckiger Klammern, die den Index angeben, an dem der jeweilige Integer-Wert im Array gespeichert ist.

Die Ausgabe jedes Werts (häufig „Value“ oder „Array Value“ genannt) erfolgt dann mit einem Zeilenumbruch <br>, was die Werte vertikal untereinander darstellt. Dieses Beispiel demonstriert, wie mit einfachen PHP-Strukturen ein Array initialisiert, mit Integer-Werten gefüllt und Sierch Iteration ausgegeben werden kann.

Verwendung einen assoziativen Array in PHP: Optimierung von Values und deren Manipulation

Hier ist ein Beispiel zur effektiven Verwendung von assoziativen Arrays in PHP, das die Optimierung von Werten und deren Manipulation durch eine Funktion illustriert. Dieses Beispiel zeigt, wie Sie ein zweidimensionales Array und eine Callbackfunktion nutzen können, um spezifische Daten zu manipulieren:

<?php
/* Zweidimensionales assoziatives Array */
$aDaten = [
    "Deutschland" => ["Hauptstadt" => "Berlin", "Einwohner" => 83000000],
    "Frankreich" => ["Hauptstadt" => "Paris", "Einwohner" => 67000000]
];

/* Funktion zur Anpassung der Einwohnerzahlen */
function adjustPopulation(mixed &$aWert, string $sKey) {
    /* Erhöhen der Einwohnerzahl um 10% für das Beispiel */
    if ($sKey === "Einwohner") {
        $aWert = round($aWert * 1.1);
    }
}

/* Manipulieren der Values des assoziativen Arrays mittels einer Callbackfunktion */
array_walk_recursive($aDaten, 'adjustPopulation');

/* Ausgabe des angepassten Arrays */
echo "Nach der Anpassung:\n";
foreach ($aDaten as $sLand => $aInfos) {
    echo $sLand . " - Hauptstadt: " . $aInfos['Hauptstadt'] . ", Einwohner: " . $aInfos['Einwohner'] . "\n";
}
?>

In der Erläuterung des obigen Beispiels wird ein zweidimensionales Array namens $aDaten definiert, das Länder als Schlüssel benutzen. Jedes Land wird durch ein weiteres Array repräsentiert, in dem spezifische Informationen wie Hauptstadt und Einwohnerzahl gespeichert sind. Diese Informationen sind mittels eckigen Klammern zugänglich, die den jeweiligen Schlüsselwert (Anm.: oft Array key genannt) umschließen, z. B. $aInfos['Hauptstadt'] und $aInfos['Einwohner'].

Die adjustPopulation Funktion ist darauf ausgelegt, die Einwohnerzahl zu modifizieren. Sie überprüft, ob der aktuelle Schlüssel 'Einwohner' lautet, und erhöht in diesem Fall den Wert um 10%. Dies wird erreicht durch die Funktion array_walk_recursive, die jedes Element des Arrays durchläuft und die angegebene Funktion anwendet.

Am Ende des Scripts wird das bearbeitete Array ausgegeben. Hierbei wird für jedes Land, seine Hauptstadt und die aktualisierte Einwohnerzahl angezeigt, wobei die eckigen Klammern erneut zum Einsatz kommen, um auf die Werte im assoziativen Array zuzugreifen. Dieses Beispiel zeigt deutlich, wie mächtig PHP-Funktionen sein können, um dynamisch und effizient mit Daten in assoziativen Arrays umzugehen.

Array Funktionen in PHP, um ein Array zu bearbeiten

Arrays sind ein wichtiger Teil der Programmierung in PHP. Sie ermöglichen es, mehrere Werte in einer einzigen Variablen zu speichern. Um Arrays in PHP zu bearbeiten, gibt es eine Reihe von Funktionen, die verwendet werden können. In diesem Artikel werden wir einige dieser Funktionen aufzählen und erklären, wie sie funktionieren.

  • Array
    • in_array()
      • in_array() überprüft, ob ein bestimmter Wert in einem Array vorhanden ist und gibt einen booleschen Wert zurück.
    • foreach()  
      • foreach() ist eine Funktion in PHP, die es ermöglicht, einen Array Element für Element zu durchlaufen und dabei jedes Element einzeln zu verarbeiten. Alternativ kann auch ein Array mit einer for() Schleife ausgegeben werden.
    • is_array()
      • Die Funktion is_array() prüft, ob eine Variable ein Array ist oder nicht und gibt dann einen booleschen Wert zurück. Sie kann also verwendet werden, um zu überprüfen, ob eine Variable ein Array ist oder nicht.
    • list()
      • list() ist eine PHP-Funktion, die es ermöglicht, ein Array in einer Variablen zu speichern und gleichzeitig die Werte anhand einer Liste von Variablen zu extrahieren.
    • array_map()
      • array_map() ist eine Funktion, die es ermöglicht, eine Callback-Funktion auf jedes Element eines Arrays anzuwenden und ein neues Array zurückzugeben, das die Ergebnisse des Callback-Aufrufs enthält.
    • array_merge()
      • Die array_merge() Funktion fügt zwei oder mehr Arrays zu einem einzigen Array zusammen. Numerische Schlüssel werden dabei neu indiziert, String-Schlüssel bleiben erhalten.
    • array_merge_recursive()
      • array_merge_recursive() kombiniert ein oder mehrere Arrays, wobei Schlüssel mit gleichen Namen in einem neuen Array zu einem Unterarray zusammengefasst werden.
    • array_chunk()
      • Die array_chunk() Funktion teilt ein Array in kleinere Arrays auf, die jeweils eine bestimmte Anzahl an Elementen enthalten. Sie kann verwendet werden, um ein Array in mehrere Abschnitte zu unterteilen.
    • array_splice()
      • PHP array_splice() ist eine Funktion, die ein bestehendes Array verändert, indem sie Elemente hinzufügt, ersetzen oder entfernt. Es kann auch verwendet werden, um Teile des Arrays in einem neuen Array zu speichern. Diese Funktion kann sehr nützlich sein, um dynamisch Arrays zu bearbeiten.
    • array_slice()
      • array_slice() extrahiert einen Teilbereich aus einem Array und gibt ihn als neues Array zurück. Das Original-Array bleibt dabei unverändert.
    • array_filter()
      • array_filter() filtert die Elemente eines Arrays anhand einer Callback-Funktion und gibt ein neues Array mit den Elementen zurück, für die der Callback true liefert.
    • array_find()
      • array_find() durchsucht ein Array mit einer Callback-Funktion und gibt das erste Element zurück, für das der Callback true ergibt. Verfügbar ab PHP 8.4.
    • array_key_exists()
      • Die PHP-Funktion array_key_exists() prüft, ob ein bestimmter Schlüssel oder Index in einem Array vorhanden ist. Wenn der angegebene Schlüssel im Array gefunden wird, gibt die Funktion true zurück, andernfalls false.
    • array_unique()
      • Die PHP Funktion array_unique() entfernt alle doppelten Elemente aus einem Array und gibt ein Array mit einmaligen Elementen zurück.
    • array_search()
      • array_search durchsucht ein Array nach einem bestimmten Wert und gibt den dazugehörigen Schlüssel zurück.
    • array_count_values()
      • Die PHP Funktion array_count_values() zählt die Anzahl der Werte in einem Array und gibt ein assoziatives Array zurück, dessen Schlüssel die einzelnen Werte des Arrays sind und deren Werte die Anzahl der Vorkommen des jeweiligen Schlüssels sind.
    • array_rand()
      • Die PHP-Funktion array_rand() wählt zufällig einen oder mehrere Schlüssel aus einem Array und gibt diese zurück.
    • array_keys()
      • Die PHP-Funktion array_keys() gibt ein Array mit allen Schlüsseln (Keys) des übergebenen Arrays zurück.
    • array_values()
      • Die PHP Funktion array_values() gibt ein neues Array zurück, das die Werte des ursprünglichen Arrays enthält, wobei die Schlüssel (Keys) neu indiziert werden.
  • Array Basic Funktionen
    • count()
      • Die count() Funktion zählt die Anzahl der Elemente eines Arrays oder Objektes und gibt diese als Ganzzahl zurück.
    • array_pop()
      • array_pop() entfernt das letzte Element eines Arrays und gibt es zurück. Es verkürzt auch die Länge des Arrays um einen Eintrag.
    • array_shift()
      • array_shift() entfernt das erste Element eines Arrays und gibt es zurück. Alle numerischen Schlüssel werden danach neu indiziert.
    • max()
      • max() gibt den größten Wert aus einer Liste von Werten zurück. Es kann mit numerischen, String-basierten und Array-basierten Werten verwendet werden.
    • current()
      • current() gibt das aktuelle Element eines Arrays zurück, auf das der interne Zeiger des Arrays zeigt. Der Zeiger wird dabei nicht verändert. Verwenden Sie next() oder prev(), um den Zeiger zu bewegen.
    • next()
      • next() wird verwendet, um den Cursor eines Arrays auf das nächste Element zu bewegen und dann dessen Wert zurückzugeben. Es gibt auch eine Funktion namens prev(), die das Gegenteil bewirkt.
    • each() (entfernt seit PHP 8.0)
      • each() lieferte ein Array-Element mit seinem Schlüssel und Wert als ein Array zurück. Diese Funktion wurde in PHP 8.0 entfernt. Verwenden Sie stattdessen eine foreach-Schleife.
    • array_push()
      • array_push() ist eine Funktion in PHP, die einem bestehenden Array Elemente hinzufügt. Es akzeptiert mehrere Argumente, die als neue Elemente am Ende des Arrays hinzugefügt werden. array_push() gibt die neue Anzahl der Elemente im Array zurück.
  • Array konvertieren
    • split() (entfernt seit PHP 7.0)
      • split() teilte einen String anhand eines Trennzeichens in ein Array auf. Diese Funktion wurde in PHP 7.0 entfernt. Verwenden Sie stattdessen explode() oder preg_split().
    • explode()
      • Explode() ist eine Funktion in PHP, die es ermöglicht, eine Zeichenkette anhand eines Trennzeichens in ein Array zu zerlegen.
    • implode()
      • implode() nimmt ein Array an Strings und kombiniert sie zu einem einzigen String, getrennt durch ein angegebenes Trennzeichen.
    • join()
      • Die join()-Funktion verbindet alle Elemente eines Arrays in einen String, wobei ein angegebenes Trennzeichen zwischen jeden Wert eingefügt wird.
  • Array-Sortiermethoden
    • array_multisort()
      • Die array_multisort() Funktion ermöglicht es, mehrere Arrays oder Arrays von Objekten nach einem oder mehreren Schlüsseln zu sortieren und kombiniert die Ergebnisse.
  • Array als Set
    • array_diff()
      • array_diff() erlaubt es, zwei oder mehrere Arrays zu vergleichen und den Unterschied zwischen Arrays mittels var_dump() oder print_r() auszugeben.
    • array_diff_key()
      • array_diff_key() vergleicht zwei oder mehr Arrays anhand ihrer Schlüssel und gibt die Einträge des ersten Arrays zurück, deren Keys in den anderen Arrays nicht vorkommen.
    • array_unshift()
      • array_unshift ist eine PHP-Funktion, die ein oder mehrere Elemente am Anfang eines Arrays hinzufügt. Der erste Parameter ist das Array, an das die Elemente hinzugefügt werden sollen, und die folgenden Parameter sind die Elemente, die hinzugefügt werden sollen. Die Funktion gibt die neue Länge des Arrays zurück.

Numerische und assoziative Arrays im Vergleich

PHP unterscheidet bei Arrays nicht so streng wie viele andere Sprachen. Intern ist jedes Array eine geordnete Map, also eine Sammlung aus Schlüssel-Wert-Paaren. Trotzdem hat sich die Trennung in zwei Denkmodelle bewährt: numerische Arrays mit fortlaufendem Integer-Index ab Null und assoziative Arrays mit sprechenden String-Schluesseln. Beides liegt im selben Datentyp, aber Sie behandeln sie im Code unterschiedlich.

<?php
declare(strict_types=1);

/* Numerisch: Reihenfolge und Position zaehlen */
$farben = ['rot', 'gruen', 'blau'];
echo $farben[1]; /* gruen */

/* Assoziativ: Bedeutung statt Position */
$user = [
    'name'  => 'Anna',
    'mail'  => 'anna@example.com',
    'admin' => true,
];
echo $user['mail']; /* anna@example.com */

Numerische Arrays nutzen Sie für Listen gleichartiger Werte, deren Reihenfolge wichtig ist. Beispiele sind Tags eines Artikels, Treffer einer Datenbankabfrage oder Zeilen einer Datei. Assoziative Arrays sind die richtige Wahl, wenn jedes Feld eine Bedeutung hat, etwa ein Datensatz mit Name, Mail und Rolle. Mit array_keys() und array_values() können Sie jederzeit zwischen den beiden Sichten wechseln und nur die Schlüssel oder nur die Werte herausziehen.

List-Helfer für numerische Arrays

Eine kleine Falle: Wenn Sie array_shift() oder unset() auf ein numerisches Array anwendest, bleiben die alten Indizes erhalten. Aus [0, 1, 2] wird so schnell [1 => 1, 2 => 2] mit Luecke an Position null. Wenn sich das stört, fuehrst Sie das Ergebnis kurz durch array_values() und bekommen saubere, fortlaufende Indizes zurueck.

Mehrdimensionale Arrays in der Praxis

Echte Daten sind selten flach. Sobald Sie Listen von Datensaetzen verwaltest, haben Sie ein mehrdimensionales Array, also ein Array, dessen Werte selbst wieder Arrays sind. Das ist die typische Struktur, die Sie aus einer Datenbankabfrage mit fetchAll() oder aus einem JSON-Stream zurueckbekommen.

<?php
declare(strict_types=1);

$buecher = [
    ['titel' => 'PHP fuer Einsteiger', 'autor' => 'Schubert', 'preis' => 24.90],
    ['titel' => 'Modernes PHP',        'autor' => 'Mueller',  'preis' => 32.00],
    ['titel' => 'Clean Code in PHP',   'autor' => 'Becker',   'preis' => 29.50],
];

foreach ($buecher as $buch) {
    echo $buch['titel'] . ' von ' . $buch['autor'] . "
";
}

Sie können beliebig tief verschachteln, solltest aber Mass halten. Mehr als drei Ebenen werden im Kopf schnell unuebersichtlich. Wenn Sie sich dabei ertappst, vier oder fünf eckige Klammern hintereinander zu schreiben, ist das ein gutes Zeichen, die Struktur in eine eigene Klasse mit typisierten Properties zu giessen. Wer trotzdem mit verschachtelten Arrays arbeitet, findet in array_merge_recursive() einen passenden Helfer und mit array_multisort() eine Möglichkeit, mehrere Spalten gleichzeitig zu sortieren.

Array-Destrukturierung mit list und Kurzform

Statt einzelne Indizes per Hand auszulesen, können Sie ein Array in einem Rutsch in mehrere Variablen entpacken. Die alte Form heißt list(), seit PHP 7.1 gibt es die Kurzschreibweise mit eckigen Klammern. Beide funktionieren auch für assoziative Arrays, wenn Sie explizit Schlüssel angeben.

<?php
declare(strict_types=1);

/* Numerische Destrukturierung */
$rgb = [200, 120, 50];
[$rot, $gruen, $blau] = $rgb;

/* Assoziative Destrukturierung */
$user = ['name' => 'Lena', 'age' => 32, 'city' => 'Hamburg'];
['name' => $name, 'city' => $stadt] = $user;

echo "$name aus $stadt"; /* Lena aus Hamburg */

Besonders elegant wird das in einer foreach-Schleife, weil Sie im Kopf der Schleife schon nur die Felder herausziehen, die Sie im Body brauchen. Das macht den Schleifenkoerper deutlich kürzer und bessert die Lesbarkeit. Genauso können Sie Funktionen mehrere Werte zurueckgeben lassen, indem Sie sie als Array packst und beim Aufruf sichekt entpackst.

Wichtige Array-Funktionen, die Sie kennen müssen

PHP liefert über 80 Funktionen rund um Arrays mit. Sie brauchen nicht alle, aber eine kleine Stammtruppe solltest Sie fluessig im Kopf haben. Sie deckt 80 Prozent aller Alltagsaufgaben ab.

  • array_map() wendet eine Callback auf jedes Element an und liefert ein neues Array zurueck.
  • array_filter() behaelt nur die Elemente, für die der Callback wahr liefert.
  • array_reduce() faltet ein Array zu einem einzelnen Wert zusammen, etwa eine Summe oder einen kombinierten String.
  • array_merge() hängt mehrere Arrays aneinander.
  • array_keys() und array_values() liefern jeweils nur eine der beiden Achsen.
<?php
declare(strict_types=1);

$zahlen = [1, 2, 3, 4, 5];

$quadrate = array_map(fn(int $n): int => $n * $n, $zahlen);
$gerade   = array_filter($zahlen, fn(int $n): bool => $n % 2 === 0);
$summe    = array_reduce($zahlen, fn(int $carry, int $n): int => $carry + $n, 0);

print_r($quadrate); /* [1, 4, 9, 16, 25] */
print_r($gerade);   /* [1 => 2, 3 => 4]   */
echo $summe;        /* 15                  */

Die drei Methoden map, filter und reduce bilden zusammen das Herzstueck der funktionalen Listenverarbeitung. Wer aus JavaScript oder Python kommt, fühlt sich hier sofort zuhause. Mit Arrow Functions bleiben die Aufrufe kompakt und gut lesbar.

Spread-Operator: Arrays entpacken seit PHP 7.4

Vor PHP 7.4 müssenest Sie Arrays mit array_merge() zusammensetzen. Seit Version 7.4 gibt es den Spread-Operator auch für Array-Literale. Die drei Punkte vor einem Array entpacken seine Elemente an dieser Stelle.

<?php
declare(strict_types=1);

$basis     = ['php', 'mysql'];
$ergaenzt  = ['html', 'css', ...$basis, 'javascript'];

print_r($ergaenzt);
/* ['html', 'css', 'php', 'mysql', 'javascript'] */

Seit PHP 8.1 funktioniert der Spread-Operator auch mit String-Schluesseln. Damit können Sie assoziative Arrays elegant zusammenfuehren, ohne array_merge() aufzurufen. Spaetere Eintraege gewinnen, wenn ein Schlüssel doppelt vorkommt. Genauso können Sie den Operator in der Parameterliste einer Funktion einsetzen, um eine variable Anzahl an Argumenten anzunehmen.

Array gegen SplFixedArray: wann lohnt der Wechsel?

PHP-Arrays sind extrem flexibel, aber diese Flexibilitaet kostet Speicher. Intern verwaltet jedes Array eine Hashmap, auch wenn Sie es nur als simple Liste benutzen. Für rein numerisch indizierte Listen mit fester Groesse gibt es eine speicherfreundlichere Alternative: SplFixedArray. Sie reserviert genau so viele Slots, wie Sie angeben, und akzeptiert nur Integer-Schlüssel von Null bis zur Maximalgroesse.

<?php
declare(strict_types=1);

$fix = new SplFixedArray(3);
$fix[0] = 'eins';
$fix[1] = 'zwei';
$fix[2] = 'drei';

foreach ($fix as $i => $wert) {
    echo "$i: $wert
";
}

In Mikro-Benchmarks bei sehr großen Datenmengen kann SplFixedArray rund ein Drittel Speicher sparen. Im Alltag merken Sie das selten, weil PHP-Arrays auch unter Last erstaunlich schnell sind. Greifen Sie nur dann zu SplFixedArray, wenn Sie nachweislich an einem Speicher-Limit arbeiten, etwa bei Bildverarbeitung oder beim Aufbau großer Lookup-Tabellen.

Sortieren: sort, asort, ksort und usort im Ueberblick

Sortieren ist die haeufigste Folgeoperation auf Arrays. PHP bietet ein knappes Dutzend Funktionen, die sich in zwei Achsen unterscheiden: nach was wird sortiert (Werte oder Schlüssel) und werden die Schlüssel-Wert-Paare beibehalten. Das führt zu vier wichtigen Vertretern.

  • sort() sortiert die Werte aufsteigend und vergisst dabei die alten Schlüssel. Die Eintraege werden mit Null beginnend neu durchnummeriert.
  • asort() sortiert die Werte aufsteigend, behaelt aber die Zuordnung Schlüssel zu Wert. Ideal für assoziative Arrays.
  • ksort() sortiert nach Schluesseln aufsteigend. Praktisch, wenn Sie Konfigurationen oder Lookup-Tabellen alphabetisch ausgeben wollen.
  • usort() sortiert nach einer eigenen Vergleichsfunktion. Damit sortieren Sie auch komplexe Datensaetze nach beliebigen Kriterien.
<?php
declare(strict_types=1);

$produkte = [
    ['name' => 'Tasse', 'preis' => 9.90],
    ['name' => 'Buch',  'preis' => 24.00],
    ['name' => 'Stift', 'preis' => 1.50],
];

/* nach Preis aufsteigend */
usort($produkte, fn(array $a, array $b): int => $a['preis'] <=> $b['preis']);

foreach ($produkte as $p) {
    echo $p['name'] . ': ' . $p['preis'] . " €
";
}

Beachte, dass alle Sortierfunktionen das Original-Array per Referenz verändern und keinen neuen Wert zurueckgeben. Sie liefern nur einen Boolean. Wer sortiert, ohne das Original zu berühren, klont das Array vorher mit dem Spread-Operator oder kopiert es über eine Zuweisung. Für absteigende Reihenfolge gibt es zu jeder Funktion das Pendant mit r am Anfang, also rsort(), arsort() oder krsort().

Diagramm: Operationen entlang einer Pipeline

Wenn Sie filter, map und sort kombinierst, bauen Sie sich eine kleine Datenpipeline. Das folgende Schaubild zeigt die typische Reihenfolge.

flowchart TD
    A[Roh-Array] --> B[array_filter]
    B --> C[array_map]
    C --> D[usort]
    D --> E[implode oder Ausgabe]

Die Reihenfolge ist meistens: zuerst filtern, damit die folgenden Schritte mit weniger Daten arbeiten, dann transformieren, dann sortieren und am Ende ausgeben oder mit implode() zu einem String verbinden. Wer zuerst sortiert und danach filtert, verschwendet Rechenzeit, weil die Sortierung Eintraege berührt, die später ohnehin verworfen werden.

Praxisbeispiel: Liste filtern, sortieren und ausgeben

Zum Abschluss ein vollstaendiges Beispiel, das alle wichtigen Bausteine aus diesem Artikel kombiniert. Sie bekommen eine Liste von Bestellungen, wollen nur die offenen sehen, sie nach Faelligkeit sortieren und am Ende als HTML-Liste ausgeben.

<?php
declare(strict_types=1);

$bestellungen = [
    ['nr' => 1001, 'kunde' => 'Anna',   'betrag' => 49.90,  'offen' => true,  'faellig' => '2026-05-15'],
    ['nr' => 1002, 'kunde' => 'Bjoern', 'betrag' => 199.00, 'offen' => false, 'faellig' => '2026-04-20'],
    ['nr' => 1003, 'kunde' => 'Carla',  'betrag' => 12.50,  'offen' => true,  'faellig' => '2026-05-02'],
    ['nr' => 1004, 'kunde' => 'Dorian', 'betrag' => 80.00,  'offen' => true,  'faellig' => '2026-05-09'],
];

/* 1) nur offene Bestellungen */
$offen = array_filter($bestellungen, fn(array $b): bool => $b['offen'] === true);

/* 2) nach Faelligkeit aufsteigend sortieren */
usort($offen, fn(array $a, array $b): int => strcmp($a['faellig'], $b['faellig']));

/* 3) auf das Wesentliche reduzieren */
$zeilen = array_map(
    fn(array $b): string => '#' . $b['nr'] . ' ' . $b['kunde'] . ' (' . $b['faellig'] . ')',
    $offen
);

/* 4) als HTML-Liste ausgeben */
echo "<ul>
";
foreach ($zeilen as $zeile) {
    echo '  <li>' . htmlspecialchars($zeile) . "</li>
";
}
echo "</ul>
";

Das Schoene an dieser Pipeline ist, dass jeder Schritt für sich klein und testbar bleibt. Sie können $offen, $zeilen oder das Endergebnis in einem Test einzeln prüfen. Wer noch einen Schritt weiter geht, kapselt jede Stufe in eine kleine Funktion und nutzen PHPUnit, um die einzelnen Bausteine abzusichern. So entstehen aus Array-Operationen wartbare und gut dokumentierte Module, die Sie in vielen Projekten wiederverwenden können.




weiter zum nächsten Kapitel: Arrays mit von PHP zur verfügung gestellten Funktionen sortieren