Maison >développement back-end >tutoriel php >Une brève discussion du code source PHP 11 : Introduction à array_key_exists, in_array
Cet article présente principalement une brève discussion sur le code source PHP 11 : l'introduction de array_key_exists et in_array a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
Un bref. discussion Code source PHP 11 : Introduction à array_key_exists, in_array
array_key_exists
(PHP 4 >= 4.1.0, PHP 5)
array_key_exists — Vérifiez le nom ou l'index de clé donné. dans le tableau
Description
bool array_key_exists ( Mixed key, array search )
array_key_exists() Renvoie TRUE lorsque la clé donnée existe dans le tableau. key peut être n’importe quelle valeur pouvant être utilisée comme index de tableau. array_key_exists() fonctionne également avec des objets.
Le programme traitera trois types différents séparément,
1. String : case IS_STRING:
==> static inline int zend_symtable_exists(HashTable *ht, char *arKey, uint nKeyLength )
==>#define HANDLE_NUMERIC(key, length, func) // Traitera la valeur de la clé de type chaîne, si c'est un nombre, prendra la valeur obtenue par la valeur func, sinon passera à l'étape suivante
= => ; ZEND_API int zend_hash_exists(HashTable *ht, char *arKey, uint nKeyLength) // Détermine si cette chaîne existe dans la table de hachage où se trouve le tableau
Numéro : case IS_LONG:
==> ZEND_API int zend_hash_index_exists (HashTable *ht, ulong h) // Cette fonction prend le bucket avec la valeur d'index h S'il y a plusieurs valeurs dans cet index, elle parcourt et prend le bucket dont la valeur clé est de type numérique 3. Valeur du mot : case IS_NULL:
==>zend_hash_exists(HASH_OF(*array), "", 1) // Déterminer s'il y a une valeur nulle dans la table de hachage où se trouve le tableau
If la fonction ci-dessus existe comme ceci : RETURN_TRUE ; sinon : RETURN_FALSE;
(PHP 4, PHP 5)
Description
bool in_array (aiguille mixte, tableau haystack [, bool strict] )
puis utilisez cette fonction pour déterminer si Equal, si elle existe, elle renvoie directement TRUE
Le code source de la macro est comme suit :
#define HASH_OF(p) (Z_TYPE_P(p)==IS_ARRAY ? Z_ARRVAL_P(p) : ((Z_TYPE_P(p)==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties((p) TSRMLS_CC) : NULL)))Le rôle de cette méthode C'est de déterminer si c'est un tableau, elle renvoie un tableau Sinon, elle détermine si c'est un objet. est un objet, il renvoie toutes les propriétés de l'objet. Sinon, il renvoie NULL
Cependant, il y a un jugement devant lui pour déterminer si le paramètre est un tableau. Le code suivant :
if (Z_TYPE_PP(array) != IS_ARRAY) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Wrong datatype for second argument"); RETURN_FALSE; }Etrange !
EOF
Ce qui précède représente 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 10 : À propos des array_keys, de la fonction array_values Une brève discussion sur Code source PHP 9 : À propos de array_unshift, Introduction à array_pushUne brève discussion du code source PHP 8 : Introduction à array_pop, array_shiftCe 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!