Une brève discussion du code source PHP vingt et un : à propos de la fonction array_slice

不言
Libérer: 2023-04-01 22:56:02
original
1955 Les gens l'ont consulté

Cet article présente principalement une brève discussion sur le code source PHP 21 : la fonction array_slice, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

A. brève discussion Code source PHP vingt et un : fonction array_slice

array_slice
(PHP 4, PHP 5)

array_slice — Supprimer une section du tableau
Instructions
array array_slice (array array , int offset [, int length [, bool préservation_keys]] )

array_slice() renvoie une séquence dans le tableau spécifié par les paramètres offset et length.

Si le décalage est non négatif, la séquence commencera à ce décalage dans le tableau. Si le décalage est négatif, la séquence commencera aussi loin de la fin du tableau.

Si la longueur est donnée et positive, il y aura autant de cellules dans la séquence. Si length est donné et négatif, la séquence se terminera aussi loin de la fin du tableau. En cas d'omission, la séquence commencera au décalage et ira à la fin du tableau.
Ce paragraphe explique que l'implémentation dans le programme est très simple, comme suit :

while (pos < offset + length && ...) { ....... }
Copier après la connexion

Notez que array_slice() réinitialisera les clés du tableau par défaut. Depuis PHP 5.0.2, ce comportement peut être modifié en définissant préservation_keys sur TRUE.

La réinitialisation des touches du tableau mentionnée ici fait référence à la réinitialisation des touches numériques du tableau.
Le code PHP est le suivant :

<?PHP $arr = array(2 => 2, 1 => 1, &#39;s&#39; => &#39;s&#39;, &#39;0&#39; => &#39;ddd&#39;); var_dump(array_slice($arr, 0)); die(); /* 此段程序会输出:array(4) { [0]=> int(2) [1]=> int(1) ["s"]=> string(1) "s" [2]=> string(3) "ddd" } */
Copier après la connexion

Dans le code source on peut voir :

<pre line="1" switch (zend_hash_get_current_key_ex(Z_ARRVAL_P(input), &string_key, &string_key_len, &num_key, 0, &hpos)) {     
case HASH_KEY_IS_STRING:    //    key为字符串,没有重置数组键的操作         
zend_hash_update(Z_ARRVAL_P(return_value), string_key, string_key_len, entry, sizeof(zval *), NULL);         
break;     
case HASH_KEY_IS_LONG:    //    key为数字     
if (preserve_keys) {    //    preserve_keys为true时不重置数字键         
zend_hash_index_update(Z_ARRVAL_P(return_value), num_key, entry, sizeof(zval *), NULL);     
} else {    //    默认情况下重置数字键         
zend_hash_next_index_insert(Z_ARRVAL_P(return_value), entry, sizeof(zval *), NULL);     
}     
break; }
Copier après la connexion

Ce qui précède est tout le contenu de cet article, j'espère que ce sera le cas Soyez utile à l'étude de chacun, veuillez faire attention au site Web PHP chinois pour plus de contenu connexe !

Recommandations associées :

Une brève discussion du code source PHP 20 : à propos des fonctions array_flip et array_reverse

Une brève discussion du code source PHP 10 Neuf : À propos de array_file, fonction range

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal