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 => 'c', 1 => 'd'); print_r(array_slice($input, 2, -1, true)); // array(2 => 'c', 1 => 'd');
É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
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't create the array of removed elements if it'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