PHP数组相关函数Demo及归纳

Demo源码

3年来都没有动手跑一跑PHP内置的Array函数。

这一跑才发现平时自鸣得意的那些算法是有原生实现的,顿时有一种啪啪啪被打脸的感觉。

希望亡羊补牢,为时不晚吧。

下面是从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);

相关推荐