W3docs

PHP array_slice-Funktion: Ein umfassender Leitfaden

Lernen Sie, wie Sie PHP array_slice() einsetzen, um Teile eines Arrays per Offset und Länge zu extrahieren – mit negativen Indizes und praktischen Beispielen.

array_slice() extrahiert einen Teil eines PHP-Arrays und gibt ihn als neues Array zurück, ohne das Original zu verändern. Diese Funktion ist das richtige Werkzeug, wenn Sie „die Elemente 5 bis 10", die ersten oder letzten N Elemente oder eine Seite mit Ergebnissen benötigen. Dieser Leitfaden behandelt die Funktionssignatur, das Verhalten der Argumente $offset, $length und $preserve_keys (einschließlich negativer Werte), die Besonderheit bei numerischen Schlüsseln und mehrere praktische Muster.

Was ist die PHP array_slice-Funktion?

Die array_slice-Funktion ist eine in PHP eingebaute Funktion, mit der Sie einen Ausschnitt eines Arrays basierend auf einem Startindex und einer Länge extrahieren können. Die Syntax der Funktion lautet wie folgt:

PHP array_slice-Funktionssyntax

array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
  • $array — das zu schneidende Array. Es wird als Wert übergeben, sodass das Original-Array nie verändert wird.
  • $offset — der Startindex des Ausschnitts. Bei einem positiven Wert beginnt der Ausschnitt so viele Elemente vom Anfang. Bei einem negativen Wert beginnt er so viele Elemente vom Ende des Arrays (-2 bedeutet „beim vorletzten Element beginnen").
  • $length (optional) — wie viele Elemente entnommen werden. Wenn weggelassen oder null, läuft der Ausschnitt bis zum Ende des Arrays. Bei einem negativen Wert endet der Ausschnitt so viele Elemente vor dem Ende. Ist der Wert größer als die verbleibenden Elemente, werden einfach alle verbleibenden Elemente zurückgegeben.
  • $preserve_keys (optional, Standard false) — siehe den Hinweis zur Schlüsselerhaltung unten.

Die Funktion gibt ein neues Array mit den ausgewählten Elementen zurück; das Original bleibt unverändert.

Negativer Offset und negative Länge

Negative Werte zählen vom Ende, was „die letzten N Elemente" und „alles außer dem letzten Element" einfach umsetzbar macht:

PHP array_slice mit negativem Offset und negativer Länge

<?php
$letters = array("a", "b", "c", "d", "e");

print_r(array_slice($letters, -2));    // last 2: Array ( [0] => d [1] => e )
print_r(array_slice($letters, 1, -1)); // skip first and last: Array ( [0] => b [1] => c [2] => d )
?>

Wie Schlüssel behandelt werden

Standardmäßig reindiziert array_slice() numerische Schlüssel beginnend bei 0, bewahrt jedoch immer string-basierte (assoziative) Schlüssel. Setzen Sie das vierte Argument auf true, wenn die ursprünglichen numerischen Schlüssel erhalten bleiben sollen:

PHP array_slice Schlüsselerhaltung

<?php
$num = array(10 => "x", 20 => "y", 30 => "z");

print_r(array_slice($num, 1));             // reindexed: Array ( [0] => y [1] => z )
print_r(array_slice($num, 1, null, true)); // kept:      Array ( [20] => y [30] => z )
?>

Das frühere Syntaxbeispiel zeigt $preserve_keys = true in Kombination mit einem negativen Offset:

PHP array_slice mit erhaltenen Schlüsseln und negativem Offset

<?php
$assoc = array("a" => 1, "b" => 2, "c" => 3, "d" => 4);
$slice = array_slice($assoc, -2, 2, true);
print_r($slice); // Output: Array ( [c] => 3 [d] => 4 )
?>

Wie verwendet man die PHP array_slice-Funktion?

Die Verwendung der array_slice-Funktion ist sehr unkompliziert. Hier ist ein Beispiel, das zeigt, wie man einen Ausschnitt eines Arrays extrahiert, beginnend beim dritten Element und die nächsten zwei Elemente einschließend:

So verwenden Sie die PHP array_slice-Funktion

php— editable, runs on the server

Wie Sie sehen können, enthält der resultierende Ausschnitt die Elemente „cherry" und „date", also die zwei Elemente ab dem dritten Element des ursprünglichen Arrays.

Praktische Beispiele für die Verwendung der PHP array_slice-Funktion

Jetzt, da Sie wissen, wie die array_slice-Funktion verwendet wird, schauen wir uns einige praktische Beispiele ihrer Anwendung an.

Ergebnisse paginieren

Wenn Sie mit einem großen Datensatz arbeiten, z. B. einer Liste von Produkten oder Blogbeiträgen, möchten Sie die Ergebnisse möglicherweise seitenweise anzeigen, um den Benutzer nicht mit zu vielen Informationen auf einmal zu überfordern. Die array_slice-Funktion ist in diesem Kontext sehr nützlich, da sie es ermöglicht, einen Ausschnitt des Datensatzes basierend auf der aktuellen Seitennummer und der Anzahl der Elemente pro Seite zu extrahieren. Hier ist ein Beispiel, das zeigt, wie das gemacht wird:

PHP Ergebnisse paginieren mit der Funktion array_slice

<?php

$dataset = range(1, 100); // Simulated dataset
$page = $_GET["page"] ?? 1; // Default to page 1 if not set
$itemsPerPage = 10;
$startIndex = ($page - 1) * $itemsPerPage;
$slice = array_slice($dataset, $startIndex, $itemsPerPage);

?>

Elemente aus einem Array entfernen

Wenn Sie ein Array haben, das Elemente enthält, die Sie entfernen möchten, können Sie array_slice() mit array_merge() kombinieren, um ein neues Array zu erstellen, das diese Elemente ausschließt. (Wenn Sie Elemente stattdessen direkt entfernen und das ursprüngliche Array verändern möchten, verwenden Sie array_splice().) Hier ist ein Beispiel:

PHP Verwendung der array_slice-Funktion in Kombination mit der array_merge-Funktion

php— editable, runs on the server

Elemente in einem Array neu anordnen

Wenn Sie ein Array haben, das Elemente enthält, die Sie neu anordnen möchten, können Sie die array_slice-Funktion in Kombination mit der array_merge-Funktion verwenden, um ein neues Array zu erstellen, das die Elemente in der gewünschten Reihenfolge enthält. Hier ist ein Beispiel, das zeigt, wie das gemacht wird:

PHP Elemente in einem Array neu anordnen

php— editable, runs on the server

Wie Sie sehen können, enthält das resultierende Array dieselben Elemente wie das ursprüngliche Array, jedoch in einer anderen Reihenfolge.

Fazit

array_slice() extrahiert einen Teil eines Arrays, ohne das Original zu berühren, und eignet sich ideal für Paginierung, das Entnehmen der ersten oder letzten N Elemente sowie das Erstellen neu geordneter Kopien. Denken Sie an die zwei wichtigsten Verhaltensweisen: Negative $offset/$length-Werte zählen vom Ende, und numerische Schlüssel werden reindiziert, sofern Sie nicht $preserve_keys = true übergeben.

Für weitere Informationen lesen Sie array_splice() für das direkte Entfernen/Ersetzen, array_merge() für das Zusammenfügen von Ausschnitten und die PHP-Arrays-Übersicht für eine Auffrischung zu Arrays und Schlüsseln.

Übung

Übung
Was macht die Funktion array_slice() in PHP?
Was macht die Funktion array_slice() in PHP?
Was this page helpful?