Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

PHP array_slice: Teilbereiche aus Arrays extrahieren

Sie befinden sich: Home > Php Tutorial > PHP array_slice:...

PHP array_slice: Teilbereiche aus Arrays extrahieren


Eintrag am:  20.03.2026
Hits / Besucher:  43
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Beim Arbeiten mit Arrays in PHP steht man häufig vor der Aufgabe, nur einen bestimmten Ausschnitt der enthaltenen Daten weiterzuverarbeiten. Die Funktion array_slice() bietet genau diese Möglichkeit: Sie extrahiert ein Teilarray aus einem bestehenden Array, ohne das Original zu verändern. Pagination, das Aufteilen von Datensätzen oder das gezielte Herauslösen einzelner Abschnitte sind typische Einsatzgebiete. In diesem Tutorial werden Syntax, Parameter und typische Anwendungsfälle Schritt für Schritt erklärt.

Illustration zum Tutorial: PHP array_slice: Teilbereiche aus Arrays extrahieren

Zuerst werden die vier Parameter der Funktion im Detail vorgestellt. Danach zeigen Beispiele, wie Offset, Length und negative Werte in der Praxis zusammenspielen.

Syntax und Parameter

Bevor die Funktion in der Praxis zum Einsatz kommt, lohnt sich ein Blick auf ihren Aufbau. Die Signatur von array_slice() umfasst vier Parameter, von denen zwei optional sind.

<?php

array_slice(
array $array,
int $offset,
?int $length = null,
bool $preserve_keys = false
);

Der erste Parameter ist das Quell-Array, aus dem der Ausschnitt entnommen werden soll. Der zweite Parameter, der Offset, legt die Startposition fest. Diese Position ist 0-basiert, das heißt, das erste Element hat den Index 0. Der dritte Parameter Length bestimmt, wie viele Elemente ab der Startposition entnommen werden. Wird er weggelassen oder auf null gesetzt, liefert die Funktion alle Elemente ab dem Offset bis zum Ende des Arrays. Der vierte Parameter preserve_keys steuert, ob die ursprünglichen numerischen Keys im neuen Array erhalten bleiben sollen.

Das folgende Diagramm veranschaulicht den grundlegenden Ablauf der Funktion.

flowchart TD
    A[Quell-Array] --> B[Offset]
    B --> C{Length?}
    C -- Ja --> D[length Elemente]
    C -- Nein --> E[Alle ab Offset]
    D --> F{preserve_keys?}
    E --> F
    F -- Ja --> G[Original-Keys]
    F -- Nein --> H[Neue Keys ab 0]
    G --> I[Original bleibt]
    H --> I

Grundlegende Beispiele

Die folgenden Beispiele zeigen die häufigsten Einsatzszenarien von array_slice() und verdeutlichen, wie Offset und Length zusammenwirken.

Elemente ab einer Position extrahieren

Wird nur ein Offset ohne Length angegeben, enthält das Ergebnis alle Elemente ab dieser Position bis zum Ende des Arrays. Das Original bleibt dabei unverändert.

<?php

$farben = ["Rot", "Grün", "Blau", "Gelb", "Lila"];

/* Alle Elemente ab Position 2 */
$ergebnis = array_slice($farben, 2);

print_r($ergebnis);
/*
Array
(
[0] => Blau
[1] => Gelb
[2] => Lila
)
*/

/* Das Original-Array ist unverändert */
print_r($farben);
/*
Array
(
[0] => Rot
[1] => Grün
[2] => Blau
[3] => Gelb
[4] => Lila
)
*/

Das Teilarray beginnt bei Position 2, also beim dritten Element. Die numerischen Keys werden im Ergebnis standardmäßig bei 0 neu begonnen.

Eine bestimmte Anzahl von Elementen

Durch Angabe des Length-Parameters lässt sich die Größe des Slice präzise festlegen. Das ist besonders nützlich für Pagination oder das Anzeigen einer begrenzten Ergebnismenge.

<?php

$staedte = ["Berlin", "Hamburg", "München", "Köln", "Frankfurt", "Stuttgart"];

/* 3 Elemente ab Position 1 */
$seite = array_slice($staedte, 1, 3);

print_r($seite);
/*
Array
(
[0] => Hamburg
[1] => München
[2] => Köln
)
*/

/* Pagination: Seite 2 mit 2 Einträgen pro Seite */
$pro_seite = 2;
$aktuelle_seite = 2;
$offset = ($aktuelle_seite - 1) * $pro_seite;

$seite_2 = array_slice($staedte, $offset, $pro_seite);

print_r($seite_2);
/*
Array
(
[0] => München
[1] => Köln
)
*/

Liegt der berechnete Offset außerhalb der Array-Länge, gibt array_slice() ein leeres Array zurück. Eine Fehlerbehandlung ist daher in der Regel nicht nötig.

Negative Werte für Offset und Length

Sowohl der Offset als auch der Length-Parameter akzeptieren negative Werte. Diese ermöglichen das Zählen vom Ende des Arrays aus und bieten damit eine flexible Alternative zur Berechnung absoluter Positionen.

Vom Ende des Arrays zählen

Ein negativer Offset bewirkt, dass die Startposition vom Ende des Arrays aus bestimmt wird. Der Wert -1 entspricht dabei dem letzten Element, -2 dem vorletzten und so weiter.

<?php

$monate = ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun",
"Jul", "Aug", "Sep", "Okt", "Nov", "Dez"];

/* Die letzten 3 Monate */
$quartal_4 = array_slice($monate, -3);

print_r($quartal_4);
/*
Array
(
[0] => Okt
[1] => Nov
[2] => Dez
)
*/

/* 4 Elemente, beginnend beim 5.-letzten */
$auswahl = array_slice($monate, -5, 4);

print_r($auswahl);
/*
Array
(
[0] => Aug
[1] => Sep
[2] => Okt
[3] => Nov
)
*/

Negativer Offset ist besonders praktisch, wenn die genaue Länge des Arrays nicht bekannt ist oder sich dynamisch ändert.

Elemente vor dem Ende abschneiden

Ein negativer Wert für Length bedeutet, dass die angegebene Anzahl von Elementen am Ende des Arrays weggelassen wird. Das Ergebnis endet also nicht bei einer festen Länge, sondern vor einer bestimmten Position vom Ende aus gerechnet.

<?php

$zahlen = [10, 20, 30, 40, 50, 60, 70, 80];

/* Ab Position 1, aber die letzten 2 weglassen */
$mitte = array_slice($zahlen, 1, -2);

print_r($mitte);
/*
Array
(
[0] => 20
[1] => 30
[2] => 40
[3] => 50
[4] => 60
)
*/

/* Ab Position 2, das letzte Element weglassen */
$ohne_enden = array_slice($zahlen, 2, -1);

print_r($ohne_enden);
/*
Array
(
[0] => 30
[1] => 40
[2] => 50
[3] => 60
[4] => 70
)
*/

Diese Kombination aus positivem Offset und negativem Length eignet sich hervorragend, um sowohl den Anfang als auch das Ende eines Arrays abzuschneiden und nur den mittleren Bereich zu erhalten.

Keys beibehalten mit preserve_keys

Standardmäßig nummeriert array_slice() die numerischen Keys im Ergebnis neu, beginnend bei 0. Durch Setzen des vierten Parameters preserve_keys auf true bleiben die ursprünglichen Indizes erhalten. Das ist wichtig, wenn die Position eines Elements innerhalb des Original-Arrays eine Rolle spielt.

<?php

$werte = ["A", "B", "C", "D", "E"];

/* Ohne preserve_keys (Standard) */
$ohne = array_slice($werte, 2, 3);
print_r($ohne);
/*
Array
(
[0] => C
[1] => D
[2] => E
)
*/

/* Mit preserve_keys */
$mit = array_slice($werte, 2, 3, true);
print_r($mit);
/*
Array
(
[2] => C
[3] => D
[4] => E
)
*/

Eine wichtige Besonderheit: Der Parameter preserve_keys betrifft ausschließlich numerische Keys. String-Keys werden unabhängig von dieser Einstellung immer beibehalten. Wer also mit einem assoziativen Array arbeitet, muss sich um diesen Parameter nicht kümmern.

array_slice bei assoziativen Arrays

Bei assoziativen Arrays funktioniert array_slice() nach dem gleichen Prinzip. Der Offset bezieht sich auf die Reihenfolge der Elemente, nicht auf deren Keys. Die String-Keys bleiben im resultierenden Teilarray stets erhalten.

<?php

$person = [
"name" => "Anna Müller",
"alter" => 32,
"stadt" => "Berlin",
"beruf" => "Entwicklerin",
"sprache" => "PHP"
];

/* 2 Elemente ab Position 1 */
$ausschnitt = array_slice($person, 1, 2);

print_r($ausschnitt);
/*
Array
(
[alter] => 32
[stadt] => Berlin
)
*/

/* Die letzten 3 Einträge */
$ende = array_slice($person, -3);

print_r($ende);
/*
Array
(
[stadt] => Berlin
[beruf] => Entwicklerin
[sprache] => PHP
)
*/

Wie zu sehen ist, bleiben die String-Keys alter, stadt, beruf und sprache automatisch erhalten. Das Verhalten ist identisch, egal ob preserve_keys auf true oder false steht.

array_slice vs. array_splice

Beide Funktionen klingen ähnlich, unterscheiden sich jedoch in einem entscheidenden Punkt. array_slice() liest einen Ausschnitt aus dem Array und gibt diesen als neues Array zurück. Das Original-Array bleibt vollständig unverändert. array_splice() hingegen entfernt den angegebenen Bereich aus dem Original-Array und kann optional neue Elemente an der gleichen Stelle einfügen. Sie verändert das Array also destruktiv.

<?php

$original_a = [1, 2, 3, 4, 5];
$original_b = [1, 2, 3, 4, 5];

/* array_slice: Original bleibt unverändert */
$slice_ergebnis = array_slice($original_a, 1, 3);

echo "Nach array_slice:" . PHP_EOL;
print_r($original_a);
/*
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
*/

/* array_splice: Original wird verändert */
$splice_ergebnis = array_splice($original_b, 1, 3);

echo "Nach array_splice:" . PHP_EOL;
print_r($original_b);
/*
Array
(
[0] => 1
[1] => 5
)
*/

Die Verwechslung dieser beiden Funktionen ist eine häufige Stolperfalle. array_slice() ist die richtige Wahl, wenn das Quell-Array später noch in seiner ursprünglichen Form benötigt wird. array_splice() kommt dann zum Einsatz, wenn Elemente tatsächlich entfernt oder ersetzt werden sollen.

Weitere häufige Fehlerquellen sind die falsche Interpretation negativer Length-Werte, die nicht etwa eine negative Anzahl bedeuten, sondern das Weglassen von Elementen am Ende steuern. Außerdem sollte beachtet werden, dass ein Offset, der größer als die Länge des Arrays ist, kein Fehler auslöst, sondern schlicht ein leeres Array liefert.

Fazit

Die Funktion array_slice() ist ein zuverlässiges Werkzeug zum Extrahieren von Teilbereichen aus Arrays in PHP. Durch die flexible Kombination von Offset und Length lassen sich sowohl einfache als auch komplexe Ausschnitte definieren. Negative Werte ermöglichen das Zählen vom Ende des Arrays, und der Parameter preserve_keys gibt Kontrolle über die Indizierung des Ergebnisses. Da array_slice() das Original-Array nicht verändert, eignet sie sich besonders gut für Szenarien, in denen Daten nur gelesen und nicht manipuliert werden sollen. Wer hingegen Elemente entfernen oder ersetzen möchte, greift zu array_splice(). Mit dem Wissen aus diesem Tutorial lässt sich array_slice() gezielt und sicher in eigenen Projekten einsetzen.

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.