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
)


Kommentare (0)

Von neu nach alt