Elemente aus einem Array extrahieren

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

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"
}
Inhaltsverzeichnis
PHP Beispiele
Nächster Artikel
Den ersten/letzten Wert ein... Wie man den allerersten oder den letzten Wert aus einem vorgegebenen Array in PHP ausliest