Maison  >  Article  >  développement back-end  >  Comment segmenter un tableau PHP

Comment segmenter un tableau PHP

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-09-28 13:17:123454parcourir

Comment segmenter un tableau PHP

Les fonctions array_slice et array_splice sont utilisées pour supprimer une tranche du tableau. array_splice a également pour fonction de remplacer la position de tranche supprimée d'origine par une nouvelle 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.

décalage

Si le décalage est un nombre positif et inférieur à la longueur, le tableau renvoyé partira du décalage si le décalage est supérieur à la longueur, aucune opération ne sera effectuée ; et il sera restitué directement. Si offset est un nombre négatif, alors offset = num_in+offset, si num_in+offset == 0, alors 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 > = num_in -offset. Si la longueur est toujours inférieure à 0 après le traitement, elle sera renvoyée directement.

preserve_keys

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

Recommandations associées : "tableau php"

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éplacer le pointeur vers la position pointée par offset

· À partir du décalage, copiez les éléments de longueur dans le tableau renvoyé

L'organigramme de l'opération est le suivant :

Comment segmenter un tableau PHP

array_splice.

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

Supprimez les éléments de longueur à partir du décalage dans l'entrée. 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);
 }

La fonction array_splice 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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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