Une brève discussion du code source PHP 14 : à propos de la fonction array_combine

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

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;  }
Copier après la connexion

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();
Copier après la connexion

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

Une brève discussion sur le code source PHP Onze : À propos de array_key_exists, introduction à in_array

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