Arrays

Grundlagen

  • Dynamisch, keine Deklaration erforderlich
  • wahlweise assoziativ oder indiziert
  • Können über array()-Funktion oder Literal [ ] angelegt werden
    • indiziert $a = [ 'A', 'B', 'C' ];
    • assoziativ $a = [ 'k1' => 1, 'k2' => 2 ];
  • Elemente werden an das Ende angehängt
    $a[] = 17;
  • Zugriff auf Array-Element über
    • Schlüssel: $a["key"]
    • Index (0..count-1): $array[0]

Beispiel: Arrays (indiziert)

// Erzeugen eines indizierten Arrays
$a[] = 1;
$a[] = 2;
$a[] = 3;

echo $a[1]; // -> 2
echo count($a); // -> 3

$a[1] = "ersetzt";
echo $a[1]; // -> ersetzt

// iterieren über Array (klassisch)
for ($i=0; $i < count($a); $i++) {
    echo ($a[$i]);
}
// Erzeugen eines indizierten Arrays
// per Literal und array-Funktion
$a = [ 1, 2, 3 ];
$b = array(3, 4, 5);

// iterieren über Array (klassisch)
for ($i=0; $i < count($a); $i++) {
    echo ($a[$i]);
}

Beispiel: Arrays (assoziativ)

// assoziatives Array
$b["gehen"] = "go";
$b["schlafen"] = "sleep";

echo $b["gehen"]; // -> go

// assoziatives Array
$c = array('gehen' => 'go', 'schlafen' => 'sleep');

echo $c["gehen"]; // -> go

// iterieren über assoziatives Array
foreach ($c as $key => $value) {
    echo $key, "->", $value;
}

Zugriff auf nicht existentes Element

Zugriff auf ein nicht existentes Element führt zu einer Warnung und ergibt null

  • kann durch ?? unterdrückt werden
  • kann vorher durch array_key_exists getestet werden
$a = [];
$a['key'] = 42;

echo $a['doesnotexist'] ?? "<undefined>";
echo array_key_exists('doesnotexist', $a) ? $a['doesnotexist'] : "<undefined>";

foreach-Schleife für Arrays

Durchläuft elementweise das Array

  • Elemente dürfen von beliebigem Typ sein
  • funktioniert für indizierte und assoziative Arrays
  • Syntax: foreach ($array as $element) { ... }
$a = array("A", "B", "C", "D", "E");

foreach ($a as $element) {
    echo $element, " ";
}
Ausgabe: A B C D E

foreach-Schleife mit Key für Arrays

Durchläuft elementweise das Array

  • Elemente dürfen von beliebigem Typ sein
  • bei indizierten Array enthält $key den Index
  • bei assoziativen enthält $key den Schlüssel
  • Syntax: foreach ($array as $key => $value) { ... }
$a = array("A", "B", "C", "D", "E");
foreach ($a as $key => $element) {
    echo $key, ": ", $element, ", ";
}
Ausgabe: 0: A, 1: B, 2: C, 3: D, 4: E

Arrays sind keine Objekte

PHP-Arrays sind keine Objekte mit Referenzen (↔ Java, JavaScript oder Ruby)

  • die Variable repräsentiert das Array, keine Referenz
  • eine Zuweisung kopiert das Array
  • Arrays werden an Funktionen per Kopie übergeben
$a = [ 1, 2, 3 ];
$b = $a; // Array wird KOPIERT

$b[0] = 42;

print_r($b); // -> [42, 2, 3]
print_r($a); // -> [ 1, 2, 3]
function array_changer($arry) {
  $arry[0] = 42;
}

$a = [1, 2, 3];
array_changer($a);
print_r($a); // -> [1, 2, 3]

Will man das Verhalten anderer Programmiersprachen, muss man eine Referenz & benutzen

$a = [ 1, 2, 3 ];
$b = &$a; // $b ist eine Referenz auf $a

$b[0] = 42;

print_r($b); // -> [42, 2, 3]
print_r($a); // -> [42, 2, 3]

function array_changer(&$arry) {
  $arry[0] = 42;
}

Wichtige Funktionen

Funktion Beschreibung
array_diff() Compare arrays, and returns the differences (compare values only)
array_fill() Fills an array with values
array_filter() Filters the values of an array using a callback function
array_flip() Flips/Exchanges all keys with their associated values in an array
array_intersect() Compare arrays, and returns the matches (compare values only)
array_key_exists() Checks if the specified key exists in the array
array_keys() Returns all the keys of an array
array_map() Sends each value of an array to a user-made function, which returns new values
array_merge() Merges one or more arrays into one array
array_pop() Deletes the last element of an array
array_push() Inserts one or more elements to the end of an array
Funktion Beschreibung
array_rand() Returns one or more random keys from an array
array_reduce() Returns an array as a string, using a user-defined function
array_reverse() Returns an array in the reverse order
array_search() Searches an array for a given value and returns the key
array_shift() Removes the first element from an array, and returns the value of the removed element
array_slice() Returns selected parts of an array
array_splice() Removes and replaces specified elements of an array
array_values() Returns all the values of an array
array_walk() Applies a user function to every member of an array
Funktion Beschreibung
asort() Sorts an associative array in ascending order, according to the value
compact() Create array containing variables and their values
extract() Imports variables into the current symbol table from an array
count() Returns the number of elements in an array
sizeof() Alias of count()
in_array() Checks if a specified value exists in an array
key() Fetches a key from an array
range() Creates an array containing a range of elements
shuffle() Shuffles an array
sort() Sorts an indexed array in ascending order

Fallstrick bei PHP-Arrays

Arrays sind gleichzeitig assoziativ und indiziert

$a[0] = "a";
$a[1] = "b";
$a["0"] = "c";
$a["2"] = "d";
$a["x"] = "e";
print("Länge: " . count($a) . "\n");
print_r($a);
Länge: 4
[0] => c, [1] => b, [2] => d, [x] => e
Man sollte darauf achten, ein Array immer nur entweder indiziert oder assoziativ zu nutzen

Copyright © 2025 Thomas Smits