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

Script Mods
 phpBB Adsense Mode

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

Partner
 Sprüche Treff

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

Arrays in PHP manipulieren

Sie befinden sich: Home > Php Tutorial > Arrays in PHP manipulieren

Arrays in PHP manipulieren


Eintrag am:  10.01.2023
Hits / Besucher:  1344
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials...
Tutorial Art:  eigenes
Eingetragen von   martin12398 martin12398
 
Beschreibung

PHP bietet eine umfangreiche Sammlung von Funktionen, um Arrays zu verändern. Ob Elemente hinzufügen, entfernen, ersetzen oder ganze Arrays zusammenfügen: Für jeden Anwendungsfall gibt es die passende Funktion. Dieses Tutorial gibt einen Überblick über die wichtigsten Manipulationsmöglichkeiten und verlinkt zu den jeweiligen Detail-Tutorials.

Schnellübersicht: Welche Funktion für welchen Zweck?

Die folgende Tabelle zeigt auf einen Blick, welche Funktion man für welche Aufgabe braucht:

Ich will...Funktion
Element am Ende hinzufügen$array[] = $wert oder array_push()
Element am Anfang hinzufügenarray_unshift()
An beliebiger Stelle einfügen, löschen oder ersetzenarray_splice()
Letztes Element entfernenarray_pop()
Erstes Element entfernenarray_shift()
Zwei Arrays zusammenfügenarray_merge() oder Spread-Operator [...$a, ...$b]
Duplikate entfernenarray_unique()
Unterschiede zwischen Arrays findenarray_diff()
Bestimmte Elemente filternarray_filter()
Alle Schlüssel auflistenarray_keys()

Elemente hinzufügen

Es gibt mehrere Wege, Elemente zu einem Array hinzuzufügen. Die Wahl hängt davon ab, ob am Anfang, am Ende oder an einer bestimmten Position eingefügt werden soll.

Am Ende: $array[] und array_push()

Die einfachste Methode ist die Kurzschreibweise $array[] = $wert. Für mehrere Werte gleichzeitig eignet sich array_push():

<?php

$farben = ['rot', 'blau'];

/* Ein Element: Kurzschreibweise */
$farben[] = 'gruen';

/* Mehrere Elemente gleichzeitig */
array_push($farben, 'gelb', 'lila');

print_r($farben);
/* Array ( [0]=>rot [1]=>blau
[2]=>gruen [3]=>gelb [4]=>lila ) */
?>

Am Anfang: array_unshift()

Mit array_unshift() werden Elemente am Anfang des Arrays eingefügt. Bestehende numerische Schlüssel werden dabei neu nummeriert:

<?php

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

print_r($zahlen);
/* Array ( [0]=>1 [1]=>2
[2]=>3 [3]=>4 [4]=>5 ) */
?>

Elemente entfernen

Zum Entfernen gibt es verschiedene Funktionen, je nachdem ob am Anfang, am Ende oder an einer bestimmten Position gelöscht werden soll.

Am Ende: array_pop()

array_pop() entfernt das letzte Element und gibt dessen Wert zurück:

<?php

$stack = ['A', 'B', 'C'];
$letztes = array_pop($stack); // 'C'

print_r($stack);
/* Array ( [0]=>A [1]=>B ) */
?>

Am Anfang: array_shift()

array_shift() entfernt das erste Element. Alle numerischen Schlüssel werden neu nummeriert:

<?php

$queue = ['A', 'B', 'C'];
$erstes = array_shift($queue); // 'A'

print_r($queue);
/* Array ( [0]=>B [1]=>C ) */
?>

Bestimmten Schlüssel entfernen: unset()

Mit unset() löscht man gezielt ein Element über seinen Schlüssel. Die übrigen Indizes bleiben dabei unverändert:

<?php

$tiere = ['Hund', 'Katze', 'Vogel', 'Fisch'];
unset($tiere[1]); // 'Katze' entfernen

print_r($tiere);
/* Array ( [0]=>Hund [2]=>Vogel [3]=>Fisch ) */

/* Indizes neu nummerieren */
$tiere = array_values($tiere);
/* Array ( [0]=>Hund [1]=>Vogel [2]=>Fisch ) */
?>

Nach unset() bleiben Lücken in den Indizes. Wer lückenlose Indizes braucht, nutzt array_values() zum Neuindizieren.

array_splice(): Die Universalfunktion

array_splice() ist die vielseitigste Funktion für Array-Manipulation. Sie kann Elemente löschen, ersetzen und an beliebiger Position einfügen. Die Syntax lautet:

<?php

array_splice(
array &$array,
int $offset,
?int $length = null,
mixed $replacement = []
): array
?>

Je nach Kombination der Parameter verhält sich die Funktion unterschiedlich:

Modus 1: Elemente löschen

Nur $offset und $length angeben, ohne Ersatz:

<?php

$monate = ['Jan', 'Feb', 'Mrz', 'Apr', 'Mai'];

/* Ab Index 1, zwei Elemente entfernen */
$entfernt = array_splice($monate, 1, 2);

print_r($monate); // ['Jan', 'Apr', 'Mai']
print_r($entfernt); // ['Feb', 'Mrz']
?>

Die Funktion gibt die entfernten Elemente zurück und nummeriert das Array automatisch neu.

Modus 2: Elemente ersetzen

Mit dem vierten Parameter $replacement werden die gelöschten Elemente durch neue ersetzt:

<?php

$farben = ['rot', 'blau', 'gruen', 'gelb'];

/* Index 1-2 durch neue Werte ersetzen */
array_splice($farben, 1, 2, ['pink', 'lila', 'orange']);

print_r($farben);
/* ['rot', 'pink', 'lila', 'orange', 'gelb'] */
?>

Die Anzahl der eingesetzten Elemente muss nicht mit der Anzahl der entfernten übereinstimmen. Das Array wächst oder schrumpft entsprechend.

Modus 3: An bestimmter Position einfügen

Setzt man $length auf 0, werden keine Elemente gelöscht, sondern nur neue eingefügt:

<?php

$buchstaben = ['A', 'B', 'E', 'F'];

/* Ab Index 2 einfügen, nichts löschen */
array_splice($buchstaben, 2, 0, ['C', 'D']);

print_r($buchstaben);
/* ['A', 'B', 'C', 'D', 'E', 'F'] */
?>

Arrays zusammenfügen

Zwei oder mehr Arrays lassen sich auf verschiedene Arten kombinieren.

array_merge()

array_merge() fügt Arrays sequentiell zusammen. Bei numerischen Schlüsseln wird neu nummeriert, bei String-Schlüsseln überschreibt das spätere Array den gleichen Schlüssel:

<?php

$a = ['rot', 'blau'];
$b = ['gruen', 'gelb'];
$zusammen = array_merge($a, $b);
/* ['rot', 'blau', 'gruen', 'gelb'] */

/* Bei assoziativen Schlüsseln: */
$standard = ['host' => 'localhost', 'port' => 3306];
$custom = ['port' => 5432, 'db' => 'meinedb'];
$config = array_merge($standard, $custom);
/* ['host'=>'localhost', 'port'=>5432, 'db'=>'meinedb'] */
?>

Ab PHP 7.4 kann man auch den Spread-Operator verwenden: $zusammen = [...$a, ...$b]. Das funktioniert genauso wie array_merge() und ist kürzer.

array_combine()

array_combine() erstellt ein neues Array, indem es die Werte des ersten Arrays als Schlüssel und die Werte des zweiten Arrays als Werte verwendet:

<?php

$keys = ['name', 'alter', 'stadt'];
$values = ['Max', 30, 'Berlin'];

$person = array_combine($keys, $values);
print_r($person);
/* Array ( [name]=>Max [alter]=>30 [stadt]=>Berlin ) */
?>

Beide Arrays müssen die gleiche Anzahl an Elementen haben, sonst gibt die Funktion einen Fehler aus.

Arrays vergleichen und filtern

PHP bietet leistungsstarke Funktionen, um Arrays zu vergleichen und gezielt Elemente herauszufiltern.

array_diff(): Unterschiede finden

array_diff() gibt alle Werte aus dem ersten Array zurück, die in keinem der anderen Arrays vorkommen:

<?php

$alle = ['PHP', 'Python', 'Java', 'Ruby'];
$gelernt = ['PHP', 'Java'];

$offen = array_diff($alle, $gelernt);
print_r($offen);
/* Array ( [1]=>Python [3]=>Ruby ) */
?>

Daneben gibt es array_diff_assoc() (vergleicht Schlüssel und Werte) und array_diff_key() (vergleicht nur Schlüssel). Details dazu im array_diff() Tutorial.

array_filter(): Elemente nach Kriterien filtern

array_filter() durchläuft jedes Element und behält nur diejenigen, für die die Callback-Funktion true zurückgibt:

<?php

$zahlen = [12, 0, 5, -3, 8, '', null, 42];

/* Ohne Callback: Entfernt alle falsy-Werte */
$bereinigt = array_filter($zahlen);
/* [12, 5, -3, 8, 42] (Indizes bleiben!) */

/* Mit Callback: Nur positive Zahlen */
$positiv = array_filter($zahlen, function($z) {
return is_int($z) && $z > 0;
});
/* [12, 5, 8, 42] */
?>

array_unique(): Duplikate entfernen

array_unique() entfernt doppelte Werte und behält jeweils das erste Vorkommen:

<?php

$tags = ['php', 'mysql', 'php', 'html', 'mysql'];
$unique = array_unique($tags);
/* ['php', 'mysql', 'html'] (mit Lücken) */

$unique = array_values(array_unique($tags));
/* ['php', 'mysql', 'html'] (lückenlos) */
?>

Praxisbeispiel: Benutzerdaten verarbeiten

Das folgende Beispiel zeigt, wie verschiedene Array-Funktionen im Zusammenspiel arbeiten. Ein Array von Benutzerdaten wird gefiltert, bereinigt und zusammengefügt:

<?php

$benutzer = [
['name' => 'Max', 'aktiv' => true],
['name' => 'Lisa', 'aktiv' => false],
['name' => 'Tom', 'aktiv' => true],
['name' => 'Anna', 'aktiv' => true],
];

/* Nur aktive Benutzer filtern */
$aktive = array_filter($benutzer, function($u) {
return $u['aktiv'] === true;
});

/* Namen extrahieren */
$namen = array_column($aktive, 'name');
/* ['Max', 'Tom', 'Anna'] */

/* Neue Benutzer hinzufügen */
array_push($namen, 'Eva', 'Jan');

/* Alphabetisch sortieren */
sort($namen);

print_r($namen);
/* ['Anna', 'Eva', 'Jan', 'Max', 'Tom'] */
?>

Hier arbeiten array_filter(), array_column(), array_push() und sort() zusammen, um eine bereinigte und sortierte Namensliste zu erzeugen.

Häufige Fragen zur Array-Manipulation

Die wichtigsten Fragen im Überblick:

Wie entferne ich ein Element anhand seines Wertes?

Mit array_search() den Schlüssel finden und dann mit unset() entfernen: $key = array_search('wert', $array); if ($key !== false) unset($array[$key]);

Was ist der Unterschied zwischen array_merge() und dem Plus-Operator?

Der +-Operator behält den Wert aus dem linken Array, wenn ein Schlüssel in beiden vorkommt. array_merge() nimmt den Wert aus dem rechten Array. Bei numerischen Schlüsseln nummeriert array_merge() neu, + behält die Indizes.

Wie sortiere ich ein assoziatives Array?

asort() sortiert nach Werten und behält die Schlüssel. ksort() sortiert nach Schlüsseln. usort() erlaubt eine eigene Vergleichsfunktion.

Wie wandle ich ein Array in einen String um?

Mit implode(', ', $array) werden alle Werte mit einem Trennzeichen verbunden. Der umgekehrte Weg ist explode(', ', $string).

 

Tags:

 

Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.