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.
1 2 3 4 5 | <?php $arr = array ( 'a' =>1, 'b' =>2, 'c' =>3); $keys = array_keys ( $arr ); print_r( $keys ); ?> |
1 2 3 4 5 6 | 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:
1 2 3 4 5 6 7 8 9 10 | <?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 ); ?> |
1 2 3 4 5 6 | 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.
1 2 3 4 5 | <?php $arr = array ( 'a' =>1, 'b' =>2, 'c' =>3); var_dump( array_key_exists ( 'a' , $arr ) ); var_dump( array_key_exists ( 'x' , $arr ) ); ?> |
1 2 | 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.)
1 2 3 4 5 6 7 8 | <?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 ); ?> |
1 2 | 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.)
1 2 3 4 5 6 7 8 9 | <?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 ); ?> |
1 2 | 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.
1 2 3 4 5 6 7 8 | <?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 ); ?> |
1 2 3 4 5 6 7 | Array ( [0] => a [1] => b [2] => d [3] => e ) |