Alle Schlüssel eines Arrays neu bilden (Thema: PHP Beispiele)

Wie alle Schlüssel eines Arrays in PHP leicht neu gebildet werden können

1. array_values()

Die Schlüssel eines Arrays können am leichtesten mit array_values($array) neu gebildet werden. Bei Anwendung gibt die Funktion alle Werte des übergebenen Arrays unter Beibehaltung der Reihenfolge zurück, wobei die Schlüssel dann fortlaufend von 0 bis n durchnummeriert (0, 1, 2, 3, ...).

Im nachfolgenden Beispiel enthält das Array $arr die Werte 1, 2 und 3, die den Schlüsseln a, b und c zugeordnet sind. Diese Schlüssel sollen zu 0, 1 und 2 geändert werden.

PHP-Code
<?php
	$arr = array('a'=>1, 'b'=>2, 'c'=>3);
	$arr = array_values($arr);
	print_r($arr);
?>

HTML-Code
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)


Im nächsten Beispiel wird gezeigt, dass array_values() auch bei Elementen mit numerischen Schlüsseln funktioniert und die Reihenfolge korrekt beibehält:

PHP-Code
<?php
	$arr = array(1324=>1, 184=>2, 831=>3, 192=>4);
	$arr = array_values($arr);
	print_r($arr);
?>

HTML-Code
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)


2. foreach-Schleife

Im nächsten Beispiel wird statt array_values() eine foreach-Schleife verwendet, welche ein zweites Array $arr2 bildet. Mit jeder Iteration wird $arr2 ein neues Element zugeordnet, dessen Schlüssel dem Zweifachen der Anzahl der Iterationen entspricht ($x*2). Eine Schleife bietet dementsprechend mehr Flexibilität bei der Zuweisung der Schlüssel, ist dafür aber langsamer als array_values().

PHP-Code
<?php
	$arr = array(1324=>1, 184=>2, 831=>3, 192=>4);
	$arr2 = array();
	$x = 0;
	foreach ($arr as $val) {
		$arr2[$x*2] = $val;
		$x++;
	}
	$arr = $arr2;
	print_r($arr);
?>

HTML-Code
Array
(
    [0] => 1
    [2] => 2
    [4] => 3
    [6] => 4
)


3. for-Schleife

Für die vorherige Aufgabe (Schlüssel als Vielfache von 2) eignet sich auch eine for-Schleife. Im Rahmen dieser muss allerdings von Element zu Element im Ausgangsarray gesprungen werden, was zuvor die foreach-Schleife für einen erledigt hat. Dazu werden die Funktionen next($array) und current($array) verwendet. next($array) setzt den Array-Zeiger auf die nächste Position im Array, current($array) gibt denjenigen Wert zurück, auf den der Array-Zeiger gerade zeigt.

PHP-Code
<?php
	$arr = array(1324=>1, 184=>2, 831=>3, 192=>4);
	$arr2 = array();

	for ($x=0, $count=count($arr); $x<$count; $x++) {
		$arr2[$x*2] = current($arr);
		next($arr); // Zeiger auf naechstes Element
	}

	$arr = $arr2;
	print_r($arr);
?>

HTML-Code
Array
(
    [0] => 1
    [2] => 2
    [4] => 3
    [6] => 4
)


Wer die Werte im Array mit Strings entsprechend des Alphabets (a, b, c, d, e...) indexieren will, der kann die nachfolgende Abwandlung der vorherigen for-Schleife verwenden, welche zusätzlich eine Variable $letter hochzählt:

PHP-Code
<?php
	$arr = array(1324=>1, 184=>2, 831=>3, 192=>4);
	$arr2 = array();

	// $letter++ macht aus "a" ein "b", aus "b" ein "c" usw.
	// Bei Erreichen von "z" wird zu "aa" erhoeht.
	for ($letter="a", $x=0, $count=count($arr); $x<$count; $x++, $letter++) {
		$arr2[$letter] = current($arr);
		next($arr);
	}

	$arr = $arr2;
	print_r($arr);
?>

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


Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung. OK