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)))
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; }
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!