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 这个函数的巧妙运用。
都说脚本语言效率差,其实,很多时候,我们是在不知不觉中浪费。如果我们能时刻考虑效率,那么,速度仍是可以让人满意的。
分享到:
相关推荐
- `filter()`: 创建一个新数组,其包含通过所提供函数实现的测试的所有元素。 ```javascript var arr = [1, 2, 3, 4, 5, 6]; var evenNumbers = arr.filter(function (value) { return value % 2 === 0; }); ...
`array_intersect()` 是 PHP 中一个非常实用的数组处理函数,它的主要作用是找出两个或多个数组之间的交集。交集是指存在于所有数组中的相同元素。这个函数在处理多个数据源时,尤其在需要筛选出共同元素的情况下...
示例代码展示了如何定义一个筛选函数`pick_one_side`,该函数接受两个参数:一个数组`$arr`和一个布尔值`$need_odd`。根据`$need_odd`的值,函数返回数组中所有的奇数或偶数。 ```php function pick_one_side($arr,...
`PHP` 的 `array_flip()` 函数是一种独特的数组操作函数,它主要用于交换数组中的键(key)和值(value)。这个函数在处理某些特定场景,如数据转换或删除重复元素时,能发挥重要作用。下面我们将深入探讨 `array_...
在处理数组时,回调函数能够帮助我们实现更灵活的数据操作,如遍历、过滤和转换。这里我们将深入探讨如何使用PHP回调函数处理数组,通过实例来解析相关操作技巧和注意事项。 1. `array_reduce` 函数: `array_...
`array_keys()` 是 PHP 中一个非常实用的数组函数,...在处理 PHP 数组时,这些函数结合使用可以实现更复杂的数组操作,例如过滤、筛选、查找和排序。了解并熟练运用这些函数,能够极大地提高 PHP 代码的效率和可读性。
接下来定义了一个名为`paixu`的函数,该函数实现了冒泡排序的逻辑。 ```php function paixu($str) { $n = count($str); // 获取数组长度 for ($i = 0; $i $n; $i++) { // 外层循环控制排序轮数 for ($j = $n - 2...
例如,如果你需要基于特定条件筛选数组元素,可以提供一个自定义的回调函数,该函数接受每个元素并返回 `TRUE` 或 `FALSE`,决定是否保留该元素。 总的来说,`array_filter()` 是 PHP 中处理数组数据的有力工具,...
- **解析URL参数**:使用PHP的`parse_str()`函数解析URL中的查询字符串,将其转化为关联数组。 - **匹配SQL条件**:将解析出的参数与数据库字段对应,生成SQL WHERE子句。 - **执行查询**:使用`mysqli_query()`...
在IT行业中,尤其是在Web开发领域,我们经常需要处理与数据关联的交互,比如创建...开发者需要理解如何处理PHP数组,如何利用JavaScript进行DOM操作,以及如何使用AJAX进行数据交换,才能有效地实现这样的交互效果。
总之,通过数组实现多条件查询是一种常见的PHP编程技巧,它依赖于字符串处理函数如 `str_replace` 和 `explode`。然而,为了确保代码的安全性和性能,需要额外考虑SQL注入防护以及查询优化措施。在处理复杂的查询...
通过使用`array_filter()`, `array_map()`, `array_walk()`等内置函数,我们可以轻松地操作多维数组,实现数据处理的各种需求。在实际工作中,根据具体情况灵活运用这些技巧,可以极大地提高代码的可读性和维护性。
4. **键名排序**:获取键名数组后,可以使用`sort()`、`rsort()`等函数对键名进行排序,从而间接实现数组的键排序。 ### 结论 `array_keys()`是PHP处理数组时的重要工具,它可以方便地提取或筛选数组的键名,为...
例如,查找数组中所有大于5的值,可以使用回调函数来实现条件筛选。 至于数组的排序操作,PHP内置了多种排序函数,包括`sort()`、`rsort()`、`asort()`、`arsort()`、`ksort()`、`krsort()`等,它们分别实现不同的...
以下是对标题和描述中提到的PHP数组全排列方法的详细解释: 首先,我们需要一个包含多个元素的数组,例如`$source`: ```php $source = array('pll', '我', '爱', '你', '嘿'); ``` 为了确保数组初始有序,可以使用...
在实际开发中,`array_keys()`可以与其他数组函数结合使用,比如`array_filter()`、`array_map()`或`array_reduce()`,实现更复杂的数组操作。例如,我们可以找到值为特定值的键后,再删除这些键对应的元素: ```...
介绍一个php中奖概率算法函数类。 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一个数是否在他...
### PHP数组函数序列之in_array() 查找数组值是否存在 #### 概述 `in_array()`函数是PHP中用于在数组内查找特定值的一个非常实用的功能。它可以帮助开发者快速判断一个给定的值是否存在于数组中,从而实现对数据的...
查找、筛选与搜索数组元素是数组操作的一些常见功能。下面来介绍一下几个相关的函数。 in_array()函数 in_array()函数在一个数组汇总搜索一个特定值,如果找到这个值返回true,否则返回false。其形式如下: boolean ...