Cet article introduit principalement une brève discussion sur le code source PHP 14 : Concernant la fonction array_combine, elle 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
Un bref. discussion sur le code source PHP 10 Quatre : À propos de la fonction array_combine
array_combine
(PHP 5)
array_combine — Créez un tableau, en utilisant la valeur d'un tableau comme nom de clé, et la valeur d'un autre tableau comme valeur
Description
array array_combine (clés de tableau, valeurs de tableau)
Renvoie un tableau, en utilisant les valeurs du tableau de clés comme noms de clés et les valeurs du tableau de valeurs comme valeurs correspondantes.
Renvoyer FALSE si le nombre de cellules dans les deux tableaux est différent ou si le tableau est vide.
Instructions d'implémentation du programme :
array_init(return_value); zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(keys), &pos_keys); zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(values), &pos_values); // 初始化数组指针,将其置为双向链接的头指针 while (zend_hash_get_current_data_ex(Z_ARRVAL_P(keys), (void **)&entry_keys, &pos_keys) == SUCCESS && zend_hash_get_current_data_ex(Z_ARRVAL_P(values), (void **)&entry_values, &pos_values) == SUCCESS) { // 同时遍历两个数组 if (Z_TYPE_PP(entry_keys) == IS_STRING) { // 如果key值为字符串,以key zval_add_ref(entry_values); add_assoc_zval_ex(return_value, Z_STRVAL_PP(entry_keys), Z_STRLEN_PP(entry_keys)+1, *entry_values); } else if (Z_TYPE_PP(entry_keys) == IS_LONG) { zval_add_ref(entry_values); add_index_zval(return_value, Z_LVAL_PP(entry_keys), *entry_values); } else { zval key; key = **entry_keys; zval_copy_ctor(&key); convert_to_string(&key); // 转化为字符串,如果为数组,则为Array zval_add_ref(entry_values); add_assoc_zval_ex(return_value, Z_STRVAL(key), Z_STRLEN(key)+1, *entry_values); zval_dtor(&key); } zend_hash_move_forward_ex(Z_ARRVAL_P(keys), &pos_keys); zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos_values); // 下一个元素,其实现为:pos_values = pos_values->pListNext; }
Dans le code PHP, si le tableau de clés contient deux tableaux, ce dernier écrasera le précédent, c'est-à-dire qu'il n'y aura qu'un seul élément au final,
Code PHP comme indiqué ci-dessous :
\<?PHP$arr1 = array(1, array(1, 2), array(3, 4), array(5, 6));$arr2 = array(33, 44, 55, 66);$arr3 = array_combine($arr1, $arr2);print_r($arr3);die();
Ce code affichera :
Array ( [1] => 33 [Array] => ; 66 )
EOF
Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
Une brève discussion sur le code source PHP 13 : Introduction à array_change_key_case, array_chunk
Une brève discussion sur le code source PHP Douze : À propos de return_value Valeur de retour
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!