A brief discussion of PHP source code seventeen: Introduction to array_diff, array_udiff, array_diff_ukey, array_diff_uassoc, array_udiff_uassoc

不言
Release: 2023-04-01 22:30:02
Original
1536 people have browsed it

This article mainly introduces the introduction to PHP source code seventeen: about array_diff, array_udiff, array_diff_ukey, array_diff_uassoc, array_udiff_uassoc. It has a certain reference value. Now I share it with you. Friends in need can refer to it

A brief discussion of PHP source code seventeen: Introduction to array_diff, array_udiff, array_diff_ukey, array_diff_uassoc, array_udiff_uassoc

These four functions call the same function php_array_diff, the difference is their parameters.
Although these five functions all call the same method, in this method, except for the processing of input and the operation of releasing related memory, there is not much sharing of programs.
Is it because of the semantics? resemblance?

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);
Copy after login

Program description:

After obtaining the input and performing related error handling
The program first confirms which comparison function is. Here, there are different values ​​for different behaviors and data_compare_type The comparison function also has different input parameter error handling
Then the input parameters are copied and sorted according to the previously obtained diff_key_compare_func. The sorting call is the zend_qsort function
Then initialize the hash table of the returned array and add the first Copy the parameters to the return array
Finally traverse all the values ​​of the first parameter and determine whether they are not in other parameters.
During the traversal process, if a certain value is in other parameters, delete all values ​​in the return array that are equal to this Value element, if a certain value is not in other parameters, skip
so that what remains is the value that needs to be returned.

The above is the entire content of this article. I hope it will be helpful to everyone's study. For more related content, please pay attention to the PHP Chinese website!

Related recommendations:

A brief discussion on PHP source code 16: About the array_count_values ​​function

## A brief discussion on PHP source code 15: About array_walk function

A brief discussion on PHP source code 14: About array_combine function

The above is the detailed content of A brief discussion of PHP source code seventeen: Introduction to array_diff, array_udiff, array_diff_ukey, array_diff_uassoc, array_udiff_uassoc. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template