当前位置:首页 > 开发 > 编程语言 > PHP > 正文

PHP数组快速筛选函数的实现

发表于: 2011-01-24   作者:bardo   来源:转载   浏览次数:
摘要:  PHP数组,是相当快的,巧妙运用数组函数,可以省去很多FOR循环。并且能加快程序的速度。 基本的数组函数是如何使用,我们就不讲了,完全可以查文档。但是,PHP数组中的函数array_filter则是一个很慢的函数。 为什么会慢,想想便知。我们都清楚,FOR循环中执行正则表达式都是很慢的,何况FOR循环中执行一个你写的函数呢?更不用想,一个初学者写的函数了。 

 PHP数组,是相当快的,巧妙运用数组函数,可以省去很多FOR循环。并且能加快程序的速度。
 基本的数组函数是如何使用,我们就不讲了,完全可以查文档。但是,PHP数组中的函数array_filter则是一个很慢的函数。
 为什么会慢,想想便知。我们都清楚,FOR循环中执行正则表达式都是很慢的,何况FOR循环中执行一个你写的函数呢?更不用想,一个初学者写的函数了。
 然而,象array_filter这样的算法,是很多场合要用到的。有没有办法加快呢?办法是有的,并且,很多场合是不需要使用array_filter的。
 比如,我们用scandir获取了文件列表。如何按我们的要求过滤扩展名呢?如果用array_filter,则又把我们从scandir获得的快速给浪费掉了。
 所以,这里给大家提供两个快速数组过滤函数。一个是过滤数值的。一个是过滤键名的。

 //fast filtering values of a array
 function fast_array_filter($array,$partten){
         $partten = '/' . preg_quote($partten) .'/';
         return  preg_grep ($partten, $array);
 }
 //fast filtering keys of a array
 function fast_array_keys_filter($array,$partten){
         $partten = '/' . preg_quote($partten) .'/';
         $keys = preg_grep($partten,array_keys($array));
         //$retArray = array_combine ($keys , array_fill(0,count($keys),0) );
         $retArray = array_flip($keys)
         return array_intersect_key($array,$retArray);
 }

 

 

 
 时间是从哪里省下的?第一个函数,只用了一个preg_grep,这就是说,直接在C语言编译好的PHP底层运算。根本不用在PHP代码中FOR循环。第二个函数也一样。用了5个PHP的函数。而没有自己写的代码。自己不循环,速度自然就上来了。
 当然,这两个函数并不是万能的,因为,它的过滤参数必须是正则表达式,如果正则过滤不了,它也就做不成了。这里的关键是 preg_grep 这个函数的巧妙运用。
 都说脚本语言效率差,其实,很多时候,我们是在不知不觉中浪费。如果我们能时刻考虑效率,那么,速度仍是可以让人满意的。

 

 

 

 

 

 

 

 

PHP数组快速筛选函数的实现

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
对保存在数组中的相关数据进行排序是一件非常有意义的事情。在PHP中提供了很多函数可以对数组进行排
所有代码可以在https://www.github.com/lozybean/learn_www中查看 PHP函数 PHP中还是有很多函数式编
定义二维数组 $a[][]=20;//二维数组 $c=array(20,30,[10,80]); echo '<pre>'; print_r($c); s
一、首先,说明一下为什么要对category.php文件进行分析。 原因如下: ①个人对商城类商品筛选功能
一、数组介绍 数组分为一维数组,二维数组和多维数组,但无论是一维还是多维,可以统一将数组分为数
原创,转载请注明出处!谢谢! 在实际的工作中遇到客户提出的需求,要求信息必须在设定的时间点才能
作者:HDK (百度) 前言 在任何语言中,函数都是最基本的组成单元。对于php的函数,它具有哪些特点
作者:HDK (百度) 前言 在任何语言中,函数都是最基本的组成单元。对于php的函数,它具有哪些特点
作者:HDK (百度) 前言 在任何语言中,函数都是最基本的组成单元。对于php的函数,它具有哪些特点
作者:HDK (百度) 前言 在任何语言中,函数都是最基本的组成单元。对于php的函数,它具有哪些特点
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号