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
1 2 3 4 5 6 7 8 | <?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
1 2 3 4 5 | <?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
1 2 3 4 5 6 7 8 9 10 | <?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
1 2 3 4 5 6 7 8 9 10 11 | <?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" }