Maison > Article > développement back-end > Une brève discussion du code source PHP 13 : Introduction à array_change_key_case et array_chunk
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); // 剩余的元素}
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!