Maison  >  Article  >  développement back-end  >  Une brève discussion du code source PHP dix-sept : Introduction à array_diff, array_udiff, array_diff_ukey, array_diff_uassoc, array_udiff_uassoc

Une brève discussion du code source PHP dix-sept : Introduction à array_diff, array_udiff, array_diff_ukey, array_diff_uassoc, array_udiff_uassoc

不言
不言original
2018-06-28 17:34:441526parcourir

Cet article présente principalement l'introduction du code source PHP dix-sept : à propos de array_diff, array_udiff, array_diff_ukey, array_diff_uassoc, array_udiff_uassoc Il 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. 🎜>Une brève discussion sur le code source PHP dix-sept : Introduction à array_diff, array_udiff, array_diff_ukey, array_diff_uassoc, array_udiff_uassoc

Ces quatre fonctions appellent la même fonction php_array_diff, la différence réside dans leurs paramètres.

Bien que ces cinq fonctions appellent toutes la même méthode, dans cette méthode, à l'exception du traitement des entrées et de l'opération de libération de la mémoire associée, il n'y a pas beaucoup de partage de programmes

Est-ce à cause de la ressemblance sémantique ?

Description du programme :
array_diff:        php_array_diff(INTERNAL_FUNCTION_PARAM_PASSTHRU, DIFF_NORMAL,
                                    DIFF_COMP_DATA_INTERNAL, DIFF_COMP_KEY_INTERNAL); 
array_diff_ukey: php_array_diff(INTERNAL_FUNCTION_PARAM_PASSTHRU, DIFF_KEY,
                                 DIFF_COMP_DATA_INTERNAL, DIFF_COMP_KEY_USER); 
array_udiff:    php_array_diff(INTERNAL_FUNCTION_PARAM_PASSTHRU, DIFF_NORMAL,
                            DIFF_COMP_DATA_USER, DIFF_COMP_KEY_INTERNAL);f
array_diff_uassoc: php_array_diff(INTERNAL_FUNCTION_PARAM_PASSTHRU, DIFF_ASSOC,
                            DIFF_COMP_DATA_INTERNAL, DIFF_COMP_KEY_USER); 
array_udiff_uassoc: php_array_diff(INTERNAL_FUNCTION_PARAM_PASSTHRU, DIFF_ASSOC,
                            DIFF_COMP_DATA_USER, DIFF_COMP_KEY_USER);

Après avoir obtenu la saisie et traité les erreurs associées

Le programme confirme d'abord quelle est la fonction de comparaison. Ici, il existe différentes fonctions de comparaison qui ont également des paramètres d'entrée différents. gestion des erreurs

Ensuite, les paramètres d'entrée sont copiés et triés selon le diff_key_compare_func obtenu précédemment. L'appel de tri est la fonction zend_qsort
Ensuite, la table de hachage du tableau renvoyé est initialisée et la première copie d'un paramètre dans le tableau de retour.
Enfin parcourez toutes les valeurs du premier paramètre et déterminez si elles ne sont pas dans d'autres paramètres
Pendant le processus de parcours, si une valeur est dans d'autres paramètres, supprimez toutes les valeurs dans le tableau de retour Pour. éléments égaux à cette valeur, si une valeur n'est pas dans d'autres paramètres, sautez
pour que la valeur qui reste soit la valeur qui doit être renvoyée.

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 du code source PHP 16 : À propos de la fonction array_count_values ​​​​


Un bref discussion du code source PHP 15 : à propos de la fonction array_walk


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

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!

Déclaration:
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