Elemente aus einem Array extrahieren (Thema: PHP Beispiele)

Wie man einen Abschnitt von Elementen aus einem bestehenden Array ausliest/kopiert

URL: http://www.rither.de/a/informatik/php-beispiele/arrays/elemente-aus-einem-array-extrahieren/

1. Anwendung von array_slice()


Um einen Teil aus einem Array zu extrahieren bzw. zu kopieren kann array_slice($array, $offset, [$length, [$preserve_keys]]) verwendet werden.
Ist $length negativ, dann wird vom Ende aus gezählt (-1 entspricht also dem vorletzten Element).
Ist $length nicht gesetzt, dann werden alle Elemente ab $offset kopiert.
$preserve_keys gibt an, ob die Schlüssel beibehalten werden sollen.
Standardmäßig ist es auf false gestellt.

PHP-Code
<?php
	$arr = array('eins', 'zwei', 'drei', 'vier', 'fünf');

	var_dump(array_slice($arr, 0, 1)); // das erste Element (die Offsets beginnen bei 0)
	var_dump(array_slice($arr, 2, 2)); // das dritte und das vierte Element
	var_dump(array_slice($arr, count($arr)-2, 1)); // das vorletzte Element
	var_dump(array_slice($arr, 2, -1)); // alle Elemente vom dritten bis zum vorletzten (einschließlich)
?>
Ausgabe
array(1) {
  [0]=>
  string(4) "eins"
}
array(2) {
  [0]=>
  string(4) "drei"
  [1]=>
  string(4) "vier"
}
array(1) {
  [0]=>
  string(4) "vier"
}
array(2) {
  [0]=>
  string(4) "drei"
  [1]=>
  string(4) "vier"
}

Der Unterschied von $preserve_keys=false (Standardeinstellung) und $preserve_keys=true:
PHP-Code
<?php
	$arr = array(100=>'einhundert', 200=>'zweihundert', 300=>'dreihundert');
	var_dump(array_slice($arr, 1, null, false));
	var_dump(array_slice($arr, 1, null, true));
?>
Ausgabe
array(2) {
  [0]=>
  string(11) "zweihundert"
  [1]=>
  string(11) "dreihundert"
}
array(2) {
  [200]=>
  string(11) "zweihundert"
  [300]=>
  string(11) "dreihundert"
}

2. Werte mit einer for-Schleife auslesen und kopieren


Alternativ zu array_slice() kann auch eine for-Schleife verwendet werden.
PHP-Code
<?php
	$arr = array(100=>'einhundert', 200=>'zweihundert', 300=>'dreihundert');
	$offset = 1;
	$length = 2;
	$arr2 = array();
	for ($x=$offset, $a=array_values($arr), $c=count($a); $x<$offset+$length && $x<$c; $x++) {
		$arr2[] = $a[$x];
	}
	var_dump($arr2);
?>
Ausgabe
array(2) {
  [0]=>
  string(11) "zweihundert"
  [1]=>
  string(11) "dreihundert"
}

Im vorherigen Beispiel gehen die Schlüssel verloren.
Sollen diese erhalten bleiben, kann wie folgt vorgegangen werden.
PHP-Code
<?php
	$arr = array(100=>'einhundert', 200=>'zweihundert', 300=>'dreihundert');
	$offset = 1;
	$length = 2;
	$arr2 = array();
	for ($x=$offset, $k=array_keys($arr), $c=count($k); $x<$offset+$length && $x<$c; $x++) {
		$key = $k[$x];
		$arr2[$key] = $arr[$key];
	}
	var_dump($arr2);
?>
Ausgabe
array(2) {
  [200]=>
  string(11) "zweihundert"
  [300]=>
  string(11) "dreihundert"
}
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