PHP數組相關函數Demo及概括

Demo源碼php

3年來都沒有動手跑一跑PHP內置的Array函數。git

這一跑才發現平時自鳴得意的那些算法是有原生實現的,頓時有一種啪啪啪被打臉的感受。github

但願亡羊補牢,爲時不晚吧。算法

下面是從Demo裏摘抄的概括對比片斷,但願對你有所啓發。數組

祝好。函數


/**
     * 8個計算數組差集的函數
     * todo u有什麼用?
     * 只對比key:
     *      array_diff_key() 經過對比key獲得數組的差集
     *      array_diff_ukey() 經過對比key得到數組的差集,key計算使用用戶自定義函數
     * 只對比value:
     *      array_diff() 經過對比value獲得數組的差集
     *      array_udiff() 經過對比value得到數組的差集,value計算使用用戶自定義函數
     * 同時對比key和value:
     *      array_diff_assoc() 同時對比key和value得到數組的差集
     *      array_diff_uassoc() 同時對比key和value得到數組的差集,key計算使用用戶自定義函數
     *      array_udiff_assoc() 同時對比key和value得到數組的差集,value計算使用用戶自定義函數
     *      array_udiff_uassoc() 同時對比key和value得到數組的差集,key和value計算使用用戶自定義函數
     * diff表明對比value
     * 後面跟key,表明對比key
     * 後面跟assoc,表明同時對比key和value
     * udiff表示value對比使用自定義函數
     * ukey表示key對比使用自定義函數
     * uassoc表示key對比使用自定義函數
     */
     
    /**
     * 8個計算數組交集的函數
     * todo u有什麼用?
     * 只對比key:
     *      array_intersect_key() 經過對比key獲得數組的交集
     *      array_intersect_ukey() 經過對比key得到數組的交集,key計算使用用戶自定義函數
     * 只對比value:
     *      array_intersect() 經過對比value獲得數組的交集
     *      array_uintersect() 經過對比value得到數組的交集,value計算使用用戶自定義函數
     * 同時對比key和value:
     *      array_intersect_assoc() 同時對比key和value得到數組的交集
     *      array_intersect_uassoc() 同時對比key和value得到數組的交集,key計算使用用戶自定義函數
     *      array_uintersect_assoc() 同時對比key和value得到數組的交集,value計算使用用戶自定義函數
     *      array_uintersect_uassoc() 同時對比key和value得到數組的交集,key和value計算使用用戶自定義函數
     * diff表明對比value
     * 後面跟key,表明對比key
     * 後面跟assoc,表明同時對比key和value
     * udiff表示value對比使用自定義函數
     * ukey表示key對比使用自定義函數
     * uassoc表示key對比使用自定義函數
     * 如下只展現3個求交集最基礎的函數,另外5個省略
     */
     
     
    /**
     * 一共9個排序函數
     * 只對key排序
     *      ksort
     *      krsort
     *      usort
     * 只對value排序
     *      sort
     *      rsort
     *      usort
     * 同時對key和value排序
     *      asort
     *      arsort
     *      uasort
     * k 按k排序
     * r 倒序
     * a 同時對key和value排序
     * u 按用戶自定義函數排序
     */
     
     e.g.
    /**
     * array_filter
     * 用回調函數過濾數組中的單元
     * 1. 返回結果保留key
     * 2. 三個參數,input_array、callback、flag
     * 3. input_array爲要過濾的函數
     * 4. callback爲用戶自定義的過濾函數
     * 5. flag有兩個值
     *      ARRAY_FILTER_USE_BOTH: 對應的callback有兩個參數
     *      ARRAY_FILTER_USE_KEY: 對應的callback只有一個參數
     * 6. 此函數使用方式很是靈活,能夠作許多有趣的事情,好比去掉數組中重複的值和而且
     * @return array
     * @author Sch0ng@163.com
     */
    $arrayFilter = function () {
        $input_array = ['foo', false, -1, null, '', [], 0, 0.00];
        $filtered_array = array_filter($input_array, function ($v, $k) {
            return $v;
        }, ARRAY_FILTER_USE_BOTH);
        return $filtered_array;
    };
    self::printR($arrayFilter);
相關文章
相關標籤/搜索