Alle Schlüssel eines Arrays ermitteln

Wie in PHP alle Schlüssel eines Arrays ausgelesen werden können

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-Code
<?php
    $arr = array('a'=>1, 'b'=>2, 'c'=>3);
	$keys = array_keys($arr);
	print_r($keys);
?>

HTML-Code
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-Code
<?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);
?>

HTML-Code
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-Code
<?php
	$arr = array('a'=>1, 'b'=>2, 'c'=>3);
	var_dump( array_key_exists('a', $arr) );
	var_dump( array_key_exists('x', $arr) );
?>

HTML-Code
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-Code
<?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);
?>

HTML-Code
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-Code
<?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);
?>

HTML-Code
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-Code
<?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);
?>

HTML-Code
Array
(
    [0] => a
    [1] => b
    [2] => d
    [3] => e
)



Deprecated: Directive 'allow_url_include' is deprecated in Unknown on line 0