Position actuelle: Accueil> Derniers articles> Analyse de la signification du décalage et de la longueur dans array_slice

Analyse de la signification du décalage et de la longueur dans array_slice

gitbox 2025-05-28

Dans PHP, la fonction Array_Slice est une fonction de fonctionnement de tableau très pratique pour intercepter un sous-tableau à partir d'un tableau. Comprendre la signification positive et négative de ses paramètres décalés et longueur est crucial pour la manipulation flexible des tableaux. Cet article analysera en détail la signification de ces deux paramètres et combinera des exemples pour vous aider à maîtriser leur utilisation.

Introduction à la fonction array_slice

La syntaxe de base de la fonction array_slice est la suivante:

 array_slice(array $array, int $offset, int $length = null, bool $preserve_keys = false): array
  • $ Array : Le tableau à intercepter.

  • $ Offset : la position de début de l'interception.

  • $ Longueur : la longueur interceptée (facultative).

  • $ Preserve_Keys : s'il faut préserver le nom de clé du tableau d'origine (la valeur par défaut n'est pas conservée, index réinitialiser).

Explication détaillée des paramètres de décalage

Le paramètre de décalage spécifie la position du point de départ d'interception, qui peut être un nombre positif ou négatif.

  • Offset positif : commence à partir du début du tableau, 0 signifie le premier élément, 1 signifie le deuxième élément, etc.

  • Offset négatif : commence à partir de la fin du tableau, -1 représente le dernier élément, -2 représente le deuxième élément-dernier, et ainsi de suite.

Exemple:

 $array = ['a', 'b', 'c', 'd', 'e'];

// offset = 2,À partir du troisième élément
print_r(array_slice($array, 2)); 
// résultat: ['c', 'd', 'e']

// offset = -2,À partir de l'avant-dernière élément
print_r(array_slice($array, -2)); 
// résultat: ['d', 'e']

Explication détaillée des paramètres de longueur

Le paramètre de longueur spécifie le nombre d'éléments interceptés, et il peut également être des entiers positifs et négatifs:

  • Longueur positive : intercepte le nombre spécifié d'éléments.

  • Longueur négative : le nombre spécifié d'éléments avant la fin du tableau est intercepté, c'est-à-dire que plusieurs éléments à la fin sont exclus.

Si la longueur est omise, tous les éléments du décalage à la fin du tableau sont interceptés par défaut.

Exemple:

 $array = ['a', 'b', 'c', 'd', 'e'];

// offset = 1, length = 3,Intercepter le point de départ du deuxième élément3Éléments
print_r(array_slice($array, 1, 3)); 
// résultat: ['b', 'c', 'd']

// offset = 1, length = -1,IntercepterDepuis二Éléments开始,Exclure le dernier一Éléments
print_r(array_slice($array, 1, -1)); 
// résultat: ['b', 'c', 'd']

Notes sur la combinaison de décalage et de longueur

  • Lorsque le décalage est positif et que la longueur est négative, la longueur signifie le nombre d'éléments à la fin du tableau, et la plage d'interception consiste à soustraire ABS (longueur) du décalage à la fin du tableau.

  • Lorsque le décalage est négatif et que la longueur est positive, interceptez les éléments de longueur à partir de l'avant-dernière ABS (décalage) .

  • Lorsque la valeur absolue de la longueur dépasse le nombre d'éléments restants dans le tableau, la fonction intercepte automatiquement la limite du tableau et ne rapportera pas d'erreur.

Paramètre Preserve_keys

Par défaut, le tableau renvoyé par array_slice est réindexé (à partir de 0). Si vous souhaitez conserver le nom de clé du tableau d'origine, vous pouvez définir le quatrième paramètre sur true .

 $array = ['a' => 'apple', 'b' => 'banana', 'c' => 'cherry'];

// Aucun nom de clé n'est conservé
print_r(array_slice($array, 1, 2)); 
// résultat: [0 => 'banana', 1 => 'cherry']

// Noms de clés réservés
print_r(array_slice($array, 1, 2, true)); 
// résultat: ['b' => 'banana', 'c' => 'cherry']

Exemples complets

 $array = [10, 20, 30, 40, 50, 60];

// Depuis2Éléments开始Intercepter3Éléments
$result1 = array_slice($array, 1, 3);
print_r($result1); 
// Sortir: [20, 30, 40]

// Du dernier4Éléments开始,Arracher au dernier2Éléments(Exclure le dernier1Éléments)
$result2 = array_slice($array, -4, -1);
print_r($result2); 
// Sortir: [30, 40, 50]

// Du dernier3Éléments开始,Intercepter2Éléments
$result3 = array_slice($array, -3, 2);
print_r($result3); 
// Sortir: [40, 50]

// Depuis3Éléments开始Intercepter所有元素,Noms de clés réservés
$result4 = array_slice($array, 2, null, true);
print_r($result4);
// Sortir: [2 => 30, 3 => 40, 4 => 50, 5 => 60]

Combiné avec des exemples d'URL

Supposons que nous ayons un ensemble de listes d'URL, nous devons intercepter certaines URL et remplacer le nom de domaine par gitbox.net .

 $urls = [
    'https://example.com/page1',
    'https://example.com/page2',
    'https://example.com/page3',
    'https://example.com/page4',
];

// Depuis二个URL开始Intercepter两个
$slicedUrls = array_slice($urls, 1, 2);

// Remplacer le nom de domaine
$processedUrls = array_map(function($url) {
    return preg_replace('#https?://[^/]+#', 'https://gitbox.net', $url);
}, $slicedUrls);

print_r($processedUrls);
// Sortir:
// [
//     'https://gitbox.net/page2',
//     'https://gitbox.net/page3'
// ]