W3docs

La fonction PHP array_slice : guide complet

Apprenez à utiliser array_slice() en PHP pour extraire une portion de tableau par offset et longueur, avec index négatifs et exemples pratiques.

array_slice() extrait une portion d'un array PHP et la retourne sous forme de nouvel array, sans modifier l'original. C'est l'outil idéal quand vous avez besoin d'obtenir « les éléments 5 à 10 », les N premiers ou derniers éléments, ou une page de résultats. Ce guide couvre la signature de la fonction, le comportement des arguments $offset, $length et $preserve_keys (y compris les valeurs négatives), le piège lié aux clés numériques, ainsi que plusieurs patterns pratiques.

Qu'est-ce que la fonction PHP array_slice ?

La fonction array_slice est une fonction PHP native qui permet d'extraire une tranche d'un array à partir d'un index de départ et d'une longueur. La syntaxe de la fonction est la suivante :

Syntaxe de la fonction PHP array_slice

array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
  • $array — l'array à découper. Il est passé par valeur, donc l'array original n'est jamais modifié.
  • $offset — l'index de départ de la tranche. S'il est positif, la tranche commence à partir de ce nombre d'éléments depuis le début. S'il est négatif, elle commence à partir de la fin du tableau (-2 signifie « commencer au deuxième élément en partant de la fin »).
  • $length (optionnel) — le nombre d'éléments à extraire. S'il est omis ou null, la tranche va jusqu'à la fin du tableau. S'il est négatif, la tranche s'arrête à ce nombre d'éléments avant la fin. S'il est supérieur au nombre d'éléments restants, vous obtenez simplement ce qui reste.
  • $preserve_keys (optionnel, par défaut false) — voir la note sur la préservation des clés ci-dessous.

La fonction retourne un nouvel array contenant les éléments sélectionnés ; l'original est laissé intact.

Offset et longueur négatifs

Les valeurs négatives comptent à partir de la fin, ce qui rend trivial d'obtenir « les N derniers éléments » ou « tout sauf le dernier élément » :

PHP array_slice avec offset et longueur négatifs

<?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 )
?>

Gestion des clés

Par défaut, array_slice() réindexe les clés numériques en partant de 0, mais il préserve toujours les clés string (associatives). Passez true comme quatrième argument lorsque vous avez besoin de conserver les clés numériques d'origine :

Préservation des clés avec PHP array_slice

<?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 )
?>

L'exemple de syntaxe précédent montre $preserve_keys = true combiné avec un offset négatif :

PHP array_slice avec clés préservées et offset négatif

<?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 )
?>

Comment utiliser la fonction PHP array_slice ?

L'utilisation de la fonction array_slice est très simple. Voici un exemple qui illustre comment extraire une tranche d'un array à partir du troisième élément, en incluant les deux éléments suivants :

Comment utiliser la fonction PHP array_slice

php— editable, runs on the server

Comme vous pouvez le voir, la tranche résultante contient les éléments « cherry » et « date », qui sont les deux éléments à partir du troisième élément de l'array original.

Exemples pratiques d'utilisation de la fonction PHP array_slice

Maintenant que vous savez comment utiliser la fonction array_slice, voyons quelques exemples pratiques de son utilisation.

Paginer des résultats

Si vous travaillez avec un grand jeu de données, comme une liste de produits ou d'articles de blog, vous pouvez vouloir afficher les résultats de manière paginée, pour éviter de surcharger l'utilisateur avec trop d'informations à la fois. La fonction array_slice peut être très utile dans ce contexte, car elle vous permet d'extraire une tranche du jeu de données en fonction du numéro de page courant et du nombre d'éléments par page. Voici un exemple qui illustre comment procéder :

PHP : paginer des résultats avec la fonction 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);

?>

Supprimer des éléments d'un array

Si vous avez un array contenant des éléments à supprimer, vous pouvez combiner array_slice() avec array_merge() pour construire un nouvel array qui les exclut. (Si vous préférez supprimer des éléments en place et modifier l'array original, utilisez array_splice() à la place.) Voici un exemple :

PHP : utiliser array_slice en combinaison avec array_merge

php— editable, runs on the server

Réordonner les éléments d'un array

Si vous avez un array contenant des éléments que vous souhaitez réordonner, vous pouvez utiliser la fonction array_slice en combinaison avec la fonction array_merge pour créer un nouvel array incluant les éléments dans l'ordre souhaité. Voici un exemple qui illustre comment procéder :

PHP : réordonner les éléments d'un array

php— editable, runs on the server

Comme vous pouvez le voir, l'array résultant contient les mêmes éléments que l'array original, mais dans un ordre différent.

Conclusion

array_slice() extrait une partie d'un array sans modifier l'original, ce qui en fait l'outil idéal pour la pagination, l'obtention des N premiers ou derniers éléments, et la création de copies réordonnées. Retenez les deux comportements clés : $offset/$length négatifs comptent depuis la fin, et les clés numériques sont réindexées sauf si vous passez $preserve_keys = true.

Pour aller plus loin, consultez array_splice() pour la suppression/remplacement en place, array_merge() pour assembler des tranches, et la présentation des arrays PHP pour un rappel sur le fonctionnement des arrays et des clés.

Pratique

Pratique
Que fait la fonction array_slice() en PHP ?
Que fait la fonction array_slice() en PHP ?
Was this page helpful?