この記事では主に、array_diff、array_udiff、array_diff_uassoc、array_udiff_uassoc についての PHP ソース コードの概要を紹介します。必要な友人に参照してもらいます。 ## PHP ソース コードの簡単な説明 17: array_diff、array_udiff、array_diff_ukey、array_diff_uassoc、array_udiff_uassoc の概要
これら 4 つの関数は同じ関数 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 関数です。次に、返された配列のハッシュ テーブルを初期化し、最初にパラメータを戻り配列にコピーします。
最後に、最初のパラメータの値をすべて走査し、それらが他のパラメータに含まれていないかどうかを判断します。
走査プロセス中に、特定の値が他のパラメータに含まれている場合は、削除します。この Value 要素と等しい戻り配列内のすべての値。特定の値が他のパラメータにない場合は、
をスキップして、返される必要のある値が残るようにします。
上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
PHP ソース コード 16 についての簡単な説明: array_count_values 関数について
# 簡単な説明PHP ソース コード 15: array_walk 関数について
# PHP ソース コード 14: array_combine 関数についての簡単な説明
以上がPHP ソース コード 17 についての簡単な説明: array_diff、array_udiff、array_diff_ukey、array_diff_uassoc、array_udiff_uassoc の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。