Maison  >  Article  >  php教程  >  Analyse des fonctions array_slice et array_splice en php

Analyse des fonctions array_slice et array_splice en php

高洛峰
高洛峰original
2017-03-18 16:10:032138parcourir

Cet article présente principalement les fonctions array_slice et array_splice en php Si vous êtes intéressé, vous pouvez y jeter un œil

Les fonctions array_slice et array_splice sont utilisées pour supprimer une tranche du tableau. . array_splice peut également être remplacé par une nouvelle tranche. La fonction originale de suppression des positions de tranche. Semblable aux méthodes Array.prototype.splice et Array.prototype.slice en javascript.

array_slice

array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )

Renvoie la tranche de sous-tableau du tableau avec le décalage et la longueur d'indice spécifiés.

Description du paramètre
Supposons que la longueur du premier tableau de paramètres soit num_in.

offset

Si offset est un nombre positif et inférieur à la longueur, le tableau renvoyé partira de offset ; si offset est supérieur à la longueur, aucune opération ne sera effectuée et il le sera. être restitué directement. Si offset est un nombre négatif, offset = num_in offset, si num_in offset == 0, offset est défini sur 0.

length

Si la longueur est inférieure à 0, alors la longueur sera convertie en num_in - offset length ; sinon, si offset length > alors length = num_in - offset. Si la longueur est toujours inférieure à 0 après traitement, elle sera renvoyée directement.

preserve_keys

La valeur par défaut est false. L'ordre d'origine des valeurs de clé numérique n'est pas conservé par défaut. S'il est défini sur true, l'ordre des valeurs de clé numérique d'origine du tableau. sera retenu.

Exemples d'utilisation

<?php
$input = array("a", "b", "c", "d", "e");
 
$output = array_slice($input, 2);   // returns "c", "d", and "e"
$output = array_slice($input, -2, 1); // returns "d"
$output = array_slice($input, 0, 3);  // returns "a", "b", and "c"
 
print_r(array_slice($input, 2, -1)); // array(0 => &#39;c&#39;, 1 => &#39;d&#39;);
print_r(array_slice($input, 2, -1, true)); // array(2 => &#39;c&#39;, 1 => &#39;d&#39;);

Étapes d'exécution

Paramètres de traitement : décalage, longueur

Déplacez le pointeur vers la position pointée par offset

En partant du décalage, copiez les éléments de longueur dans le tableau renvoyé

L'organigramme des opérations est le suivant

Analyse des fonctions array_slice et array_splice en php

array_splice

array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement = array() ]] )

Supprimer Il y a des éléments de longueur dans l'entrée à partir du décalage. S'il existe un paramètre de remplacement, utilisez le tableau de remplacement pour remplacer les éléments supprimés.

Description des paramètres

Les paramètres de décalage et de longueur dans la fonction array_splice sont utilisés de la même manière que dans la fonction array_slice.

remplacement

Si ce paramètre est défini, la fonction utilisera le tableau de remplacement pour le remplacement.

Si le décalage et la longueur spécifient qu'aucun élément ne doit être supprimé, le remplacement sera inséré au décalage.

Si le remplacement n'a qu'un seul élément, vous n'avez pas besoin de array() pour l'envelopper.

Exemple d'utilisation

<?php
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input变为 array("red", "green")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, -1);
// $input变为 array("red", "yellow")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input变为 array("red", "orange")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));
// $input为 array("red", "green",
//     "blue", "black", "maroon")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input为 array("red", "green",
//     "blue", "purple", "yellow");

Interprétation du code source

Dans array_splice, il y a un tel morceau de code :

/* Don&#39;t create the array of removed elements if it&#39;s not going
  * to be used; e.g. only removing and/or replacing elements */
 if (return_value_used) { // 如果有用到函数返回值则创建返回数组,否则不创建返回数组
   int size = length;
 
   /* Clamp the offset.. */
   if (offset > num_in) {
     offset = num_in;
   } else if (offset < 0 && (offset = (num_in + offset)) < 0) {
     offset = 0;
   }
 
   /* ..and the length */
   if (length < 0) {
     size = num_in - offset + length;
   } else if (((unsigned long) offset + (unsigned long) length) > (unsigned) num_in)     {
     size = num_in - offset;
   }
 
   /* Initialize return value */
   array_init_size(return_value, size > 0 ? size : 0);
   rem_hash = &Z_ARRVAL_P(return_value);
 }

array_splice la fonction renvoie la tranche supprimée. La signification de ce code est que si array_splice doit renvoyer une valeur, créez le tableau de retour, sinon ne le créez pas pour éviter de perdre de l'espace. C'est aussi une petite astuce de programmation, à revenir uniquement en cas de besoin. Par exemple, si $result = array_splice(...) est utilisé dans une fonction, return_value_used est vrai.

Résumé

C'est la fin de cet article. Dans la programmation quotidienne, vous devez d'abord gérer les situations les plus particulières, tout comme vous l'avez fait lors de la mise en œuvre de ces deux fonctions. Continuez ensuite à éviter de porter des jugements inutiles ; ne demandez un nouvel espace que lorsque vous devez enregistrer de nouvelles variables, sinon cela entraînerait du gaspillage.

Merci d'avoir lu, j'espère que cela pourra vous aider, merci pour votre soutien à ce site !

Pour plus d'articles liés à l'analyse des fonctions array_slice et array_splice en PHP, veuillez faire attention au site Web chinois de PHP !

Articles connexes :

Séquence de fonctions de tableau php array_slice()

Utilisation de la fonction php array_slice et explication détaillée des paramètres

php array_slice supprime une instance de séquence dans le tableau

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn