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

)