资讯专栏INFORMATION COLUMN

PHP数组相关函数Demo及归纳

shuibo / 540人阅读

摘要:源码年来都没有动手跑一跑内置的函数。这一跑才发现平时自鸣得意的那些算法是有原生实现的,顿时有一种啪啪啪被打脸的感觉。希望亡羊补牢,为时不晚吧。下面是从里摘抄的归纳对比片段,希望对你有所启发。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29075.html

相关文章

  • 前端知识归纳

    摘要:继承性子标签会继承父标签样式优先级行内样式选择器类选择器标签选择器通配符继承机制创建了的元素中,在垂直方向上的会发生重叠。 技能考察: 一、关于Html 1、html语义化标签的理解; 结构化的理解; 能否写出简洁的html结构; SEO优化 a、理解:根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时 让浏览器的爬虫和...

    sixleaves 评论0 收藏0
  • 前端知识归纳

    摘要:继承性子标签会继承父标签样式优先级行内样式选择器类选择器标签选择器通配符继承机制创建了的元素中,在垂直方向上的会发生重叠。 技能考察: 一、关于Html 1、html语义化标签的理解; 结构化的理解; 能否写出简洁的html结构; SEO优化 a、理解:根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时 让浏览器的爬虫和...

    NotFound 评论0 收藏0
  • 前端知识归纳

    摘要:继承性子标签会继承父标签样式优先级行内样式选择器类选择器标签选择器通配符继承机制创建了的元素中,在垂直方向上的会发生重叠。 技能考察: 一、关于Html 1、html语义化标签的理解; 结构化的理解; 能否写出简洁的html结构; SEO优化 a、理解:根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时 让浏览器的爬虫和...

    魏宪会 评论0 收藏0
  • jQuery学习和知识点总结归纳

    摘要:目前在前端开发所占的比重越来越高,在我们学习和开发的过程中都会去使用。下面把程序员雷雪松对的知识点总结和归纳分享给大家。过滤对同胞元素的搜索。将匹配元素集合缩减为集合中的最后一个元素。返回指定元素相对于其他指定元素的位置。 jQuery目前在Web前端开发所占的比重越来越高,在我们jQuery学习和开发的过程中都会去使用。jQuery帮我们解决了浏览器之间JS一些不兼容的地方和简化了原...

    JohnLui 评论0 收藏0

发表评论

0条评论

shuibo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<