1. array_keys()
Vorgesehen zum Ermitteln aller Schlüssel eines Arrays ist die Funktion array_keys($array). Diese wird auf ein Array $array angewendet und gibt wiederum ein Array zurück, dessen Schlüssel von 0 bis n durchnummeriert sind (0, 1, 2, 3, ...) und deren Werte den Schlüsseln von $array entsprechen. Die Reihenfolge der Schlüssel im Ergebnisarray ist identisch zu der in $array.
<?php $arr = array('a'=>1, 'b'=>2, 'c'=>3); $keys = array_keys($arr); print_r($keys); ?>
Array ( [0] => a [1] => b [2] => c )
2. foreach-Schleife
Wer mehr Flexibilität benötigt, kann auf eine simple foreach-Schleife zurückgreifen und mit jeder Iteration einen Wert zum gewünschten Ergebnisarray hinzufügen. Im nachfolgenden Beispiel werden etwa nur solche Schlüssel beachtet, die Strings sind:
<?php $arr = array('a'=>1, 'b'=>2, 'c'=>3, 111=>4); $keys = array(); foreach ($arr as $key=>$val) { if (is_string($key)) { $keys[] = $key; } } print_r($keys); ?>
Array ( [0] => a [1] => b [2] => c )
3. Prüfen, ob bestimmter Schlüssel existiert
Soll nur überprüft werden, ob ein bestimmter Schlüssel im Array existiert oder nicht, dann kann die Funktion array_key_exists($schluessel, $array) verwendet werden. Ist $array[$schluessel] gesetzt, dann wird true zurückgegeben, sonst false.
<?php $arr = array('a'=>1, 'b'=>2, 'c'=>3); var_dump( array_key_exists('a', $arr) ); var_dump( array_key_exists('x', $arr) ); ?>
bool(true) bool(false)
4. Erster/Letzter Schlüssel
Wer nicht am Array mit allen Schlüsseln interessiert ist, sondern nur am ersten und letzten Schlüssel, der kann diese leicht aus dem Ergebnis von array_keys() auslesen. Der erste Schlüssel hat in diesem Ergebnisarray den Index 0, der letzte den Index count($ergebnisarray)-1. (Der letzte ist also von der Anzahl aller Schlüssel abhängig, welche wiederum über count() bestimmt werden muss.)
<?php $arr = array('a'=>1, 'b'=>2, 'c'=>3); $keys = array_keys($arr); $first = (!empty($keys) ? $keys[0] : null); // erster Schluessel, NULL falls Array leer ist $last = (!empty($keys) ? $keys[count($keys)-1] : null); // letzter Schluessel, NULL falls Array leer ist var_dump($first); var_dump($last); ?>
string(1) "a" string(1) "c"
Alternativ können auch die Funktionen reset($array), end($array) und key($array) verwendet werden. Über reset($array) springt man an den Anfang von $array, über end($array) zum letzten Element. Mit key($array) wird wiederum der Schlüssel desjenigen Elements bestimmt, auf den der Array-Pointer gerade zeigt. (Ist das Array leer, dann gibt key($array) NULL zurück.)
<?php $arr = array('a'=>1, 'b'=>2, 'c'=>3); reset($arr); // Zeiger auf den Anfang setzen $first = key($arr); end($arr); // Zeiger auf das Ende setzen $last = key($arr); var_dump($first); var_dump($last); ?>
string(1) "a" string(1) "c"
5. Alle Schlüssel eines mehrdimensionalen Arrays ermitteln
Für ein mehrdimensionales array_keys() wird am besten array_walk_recursive($array, $callback) verwendet. Diese Funktion wendet $callback auf alle Elemente in $array an. Es muss nur bei jeder Iteration der aktuelle Schlüssel in ein weiteres Array (hier: $keys) geschrieben werden.
<?php $arr = array('a'=>1, 'b'=>2, 'c'=>array('d'=>3, 'e'=>4)); $keys = array(); array_walk_recursive($arr, function($val, $key) use (&$keys) { $keys[] = $key; }); print_r($keys); ?>
Array ( [0] => a [1] => b [2] => d [3] => e )