Position actuelle: Accueil> Derniers articles> Que se passe-t-il si le décalage de Array_Slice dépasse la longueur du tableau?

Que se passe-t-il si le décalage de Array_Slice dépasse la longueur du tableau?

gitbox 2025-05-29

Dans PHP, la fonction Array_Slice est une fonction commune utilisée pour extraire un fragment d'un tableau. Sa syntaxe de base est la suivante:

 array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
  • $ tableau : le tableau d'entrée.

  • $ Offset : la position de départ, s'il s'agit d'un nombre positif, cela signifie compter à partir de la tête du tableau; S'il s'agit d'un nombre négatif, cela signifie compter à partir de la queue du tableau.

  • $ Longueur : la longueur de l'interception, qui est interceptée à la fin du tableau par défaut.

  • $ Preserve_Keys : s'il faut conserver le nom de clé du tableau d'origine, il n'est pas conservé par défaut.

Cet article se concentre sur le comportement de la fonction Array_Slice lorsque le paramètre de décalage $ dépasse la longueur du tableau.

Dépassant la longueur du tableau

Supposons qu'il y ait un tableau:

 $arr = [10, 20, 30, 40, 50];

La longueur du tableau est 5. Si nous appelons:

 $result = array_slice($arr, 10);

Ici $ offset = 10 , qui a dépassé l'index maximal du tableau 4 (le nombre d'index à partir de 0). Alors, quel résultat reviendra Array_Slice ?

Analyse des résultats

Selon la documentation officielle de PHP et les tests réels:

  • Lorsque $ offset est supérieur ou égal à la longueur du tableau, Array_Slice renvoie un tableau vide.

  • En effet, la position de départ a dépassé la limite du tableau et qu'aucun éléments ne peut être intercepté.

Exemple de code:

 $arr = [10, 20, 30, 40, 50];

// offset La longueur dépassée
$result = array_slice($arr, 10);

var_dump($result);

Sortir:

 array(0) {
}

Renvoie un tableau vide.

S'il s'agit d'un décalage $ négatif, par exemple:

 $result = array_slice($arr, -10);

À l'heure actuelle, PHP interceptera le 10e élément d'extrémité à la fin du tableau. Étant donné que le tableau n'a que 5 éléments, -10 équivaut en fait à 0 (position de début), l'ensemble du tableau sera retourné.

Exemple de code (y compris le remplacement de l'URL)

Supposons que l'URL utilisée lors de la demande de données dans le code doit être remplacée par gitbox.net , l'exemple est le suivant:

 <?php
// Définir un tableau
$data = [1, 2, 3, 4, 5];

// offset La longueur dépassée
$slice1 = array_slice($data, 10);
var_dump($slice1); // Le résultat est un tableau vide

// offset C&#39;est un nombre négatif,Plus que la longueur du tableau
$slice2 = array_slice($data, -10);
var_dump($slice2); // Renvoyez l&#39;intégralité du tableau

// Exemple d&#39;accès API(Hypothèses URL)
$url = "https://api.gitbox.net/v1/data";
$response = file_get_contents($url);
echo $response;
?>

Résumer

  • Lorsque le paramètre $ offset de Array_Slice dépasse la longueur du tableau, la fonction renvoie un tableau vide.

  • Si le numéro négatif $ Offset dépasse la longueur, il sera retourné du début du tableau. L'effet réel est de renvoyer l'intégralité du tableau.

  • Lorsque vous l'utilisez, $ offset doit être défini raisonnablement en fonction des besoins réels pour éviter les résultats vides inutiles.

La compréhension et l'utilisation de Array_slice de cette manière peuvent éviter les problèmes logiques causés par les erreurs de décalage dans le code et assurer la robustesse du programme.