이 글에서는 주로 array_diff, array_udiff, array_diff_ukey, array_diff_uassoc, array_udiff_uassoc에 대한 PHP 소스 코드 소개를 소개합니다. 이제는 필요한 친구들이 참고할 수 있도록 공유합니다. PHP 소스 코드 17: array_diff, array_udiff, array_diff_ukey, array_diff_uassoc, array_udiff_uassoc
소개 이 네 가지 함수는 동일한 함수 php_array_diff를 호출하지만 차이점은 매개변수입니다.
5가지 함수가 모두 같은 메소드를 호출하지만, 이 메소드에서는 입력 처리와 관련 메모리 해제 연산을 제외하면 프로그램 공유가 많지 않습니다.의미상의 유사성 때문일까요?
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);
입력을 받고 관련 오류 처리를 수행한 후
프로그램은 먼저 어떤 비교 함수가 있는지 확인합니다. 여기에는 다양한 동작과 data_compare_type에 대한 다양한 비교 함수가 있으며, 입력 매개변수 오류 처리도 다릅니다. 그런 다음 입력 매개변수를 복사하고 이전에 얻은 diff_key_compare_func에 따라 정렬합니다. 정렬은 zend_qsort 함수를 호출합니다.
그런 다음 반환 배열의 해시 테이블을 초기화하고 첫 번째 매개변수를 반환 배열에 복사합니다.
마지막으로 모든 첫 번째 매개변수 값을 순회합니다. 다른 매개변수에 없는지 확인합니다. 순회 과정에서 특정 값이 다른 매개변수에 있으면 반환된 배열에서 이 값과 동일한 요소를 모두 삭제합니다. 특정 값이 다른 매개변수에 없으면 건너뜁니다. 남아는 반환되어야 하는 값입니다.
위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!
관련 권장 사항:
PHP 소스 코드에 대한 간략한 토론 15: array_walk 함수에 대해
에 대한 간략한 토론 PHP 소스 코드 14: array_combine 함수 정보
위 내용은 PHP 소스 코드 17에 대한 간략한 토론: array_diff, array_udiff, array_diff_ukey, array_diff_uassoc, array_udiff_uassoc 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!