Une brève discussion du code source PHP 13 : Introduction à array_change_key_case et array_chunk

不言
Libérer: 2023-04-01 22:08:01
original
2047 Les gens l'ont consulté

Cet article présente principalement la brève discussion sur le code source PHP 13 : L'introduction de array_change_key_case et array_chunk a une certaine valeur de référence. Maintenant, je la partage avec vous. Les amis dans le besoin peuvent s'y référer

Brève discussion. Code source PHP 13 : Introduction à array_change_key_case, array_chunk

array_change_key_case

(PHP 4 >= 4.2.0, PHP 5)
array_change_key_case — Renvoie les noms de clés de chaîne en minuscules Ou tableau majuscule
Description

array array_change_key_case ( array input [, int case] )

array_change_key_case() Change tous les noms de clés du tableau d'entrée en minuscules ou en majuscules. Les modifications sont apportées sur la base de l'argument de ce dernier cas d'option. Deux constantes peuvent être utilisées ici, CASE_UPPER et CASE_LOWER. La valeur par défaut est CASE_LOWER. Cette fonction ne modifie pas l'index numérique.
Quand j'ai vu cette fonction, j'ai pensé qu'elle devait parcourir la table de hachage où se trouve le tableau, puis convertir sa valeur de clé correspondante en majuscules ou minuscules (s'il s'agit d'une valeur de clé de chaîne)
Après l'avoir lu, il existe quelques différences. Le programme en ajoute un à la référence de chaque élément du tableau

array_chunk
(PHP 4 >= 4.2.0, PHP 5)
array_chunk — Diviser un tableau en plusieurs
Description

array array_chunk (array input, int size [, bool préservation_keys])

array_chunk() divise un tableau en plusieurs tableaux, où le nombre de cellules dans chaque tableau est déterminé par taille . Le dernier tableau peut contenir quelques éléments en moins. Le tableau résultant est une cellule d’un tableau multidimensionnel, avec des index commençant à zéro.
Définissez le paramètre facultatif préserver_keys sur TRUE pour permettre à PHP de conserver les noms de clés d'origine dans le tableau d'entrée. Si vous spécifiez FALSE, chaque tableau de résultats sera indexé avec un nouveau numéro commençant à zéro. La valeur par défaut est FAUX.

Instructions de mise en œuvre du programme :

  array_init(return_value);    //    初始化返回值 数组
  zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(input), &pos);
  while (zend_hash_get_current_data_ex(Z_ARRVAL_P(input), (void**)&entry, &pos) == SUCCESS) {      //    遍历HASH TABLE/* 如果不存在,则创建并初始化chunk */
   if (!chunk) {
   MAKE_STD_ZVAL(chunk);array_init(chunk);}
   /* 给数组元素的引用加一,相当于 *entry->refcount++; */
   zval_add_ref(entry);
   if (preserve_keys) {    //    保留键值
   key_type = zend_hash_get_current_key_ex(Z_ARRVAL_P(input), &str_key,&str_key_len, &num_key, 0, &pos);    //    取元素的key值类型,此值是要所元素的nKeyLength属性判断 
   if (key_type == HASH_KEY_IS_STRING) {    //    字符串类型add_assoc_zval_ex(chunk, str_key, str_key_len, *entry);
   } else {
   add_index_zval(chunk, num_key, *entry);}
   } else {
   add_next_index_zval(chunk, *entry);    //    给返回的子数组添加元素} 
   if (!(++current % size)) {    //    如果达到分割的界限,则将分割出来创建的子数组添加到返回数组中,并将子数组置为NULl
   add_next_index_zval(return_value, chunk);
   chunk = NULL;}zend_hash_move_forward_ex(Z_ARRVAL_P(input), &pos);    //    下一个元素}
   if (chunk) {add_next_index_zval(return_value, chunk);    //    剩余的元素}
Copier après la connexion

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. Pour plus de contenu connexe, veuillez faire attention au PHP. Site chinois !

Recommandations associées :

Une brève discussion du code source PHP 12 : À propos de la valeur de retour return_value

Une brève discussion de Code source PHP 11 : Introduction à array_key_exists, in_array

Une brève discussion du code source PHP 10 : À propos des fonctions array_keys et array_values ​​


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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!