淺談PHP源碼十七:關於array_diff,array_udiff,array_diff_ukey,array_diff_uassoc,array_udiff_uassoc的介紹

來源:互聯網
上載者:User
這篇文章主要介紹了關於淺談PHP源碼十七:關於array_diff,array_udiff,array_diff_ukey,array_diff_uassoc,array_udiff_uassoc的介紹,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

淺談PHP源碼十七:關於array_diff,array_udiff,array_diff_ukey,array_diff_uassoc,array_udiff_uassoc的介紹

這4個函數調用的是同一個函數php_array_diff,所不同的是他們的參數。
雖然這五個函數都是調用同一個方法,但是在這個方法中,除了對輸入的處理和釋放相關記憶體的操作外,程式的共用並不是太多
難道是因為在語義的相似?

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);farray_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);

程式說明:

在獲得了輸入和作了相關錯誤處理後
程式首先確認比較函數是哪個,此處,針對不同的behavior和data_compare_type有不同的比較函數,也有不同的輸入參數錯誤處理
然後對輸入的參數複製並按照之前得到的diff_key_compare_func進行排序,排序調用的是zend_qsort函數
然後初始化返回數組的hash table,並將第一個參數複製到返回數組
最後遍曆第一個參數的所有值,並判斷是否不在其它參數中,
在遍曆過程中,如果某一個值在其它參數中則刪除返回數組中所有等於這個值的元素,如果某一個值不在其它參數中,則跳過
這樣留下來的就是需要返回的值。

以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.