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 && ...) { ....... }
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, 's' => 's', '0' => 'ddd'); var_dump(array_slice($arr, 0)); die(); /* 此段程序会输出:array(4) { [0]=> int(2) [1]=> int(1) ["s"]=> string(1) "s" [2]=> string(3) "ddd" } */
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; }
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!