除了foreach 和 for,数组的一些遍历函数,也非常高效

2023-06-02 22:48:22 浏览数 (1)

日常开发中,也不能总用foreach 和 for,尤其数组的一些遍历函数,非常高效。

array_filter()array_map()array_walk()array_reduce() 是常见的数组遍历函数。它们有不同的功能和用法:

1. array_filter()

array_filter() 函数可以过滤数组中的元素,并返回符合条件的元素组成的新数组。它的语法如下:

代码语言:php复制
$new_array = array_filter($array, $callback);

其中 $array 是要遍历的数组变量名,$callback 是过滤函数,用于判断每个元素是否保留到新数组中。

比如,我们可以使用以下代码从数组中筛选出所有奇数:

代码语言:php复制
$array = [1, 2, 3, 4, 5];
$new_array = array_filter($array, function($var) {
    return ($var % 2 == 1);
});
print_r($new_array); // 输出 [1, 3, 5]

2. array_map()

array_map() 函数可以对数组中的每个元素应用一个回调函数,并返回处理后的新数组。它的语法如下:

代码语言:php复制
$new_array = array_map($callback, $array1, $array2, ...);

其中 $callback 是回调函数,用于处理每个元素,$array1$array2 等是要处理的数组变量名,可以传入多个数组。处理后的结果将组成新数组返回。

例如,我们可以使用以下代码将数组中的每个元素都乘以 2:

代码语言:php复制
$array = [1, 2, 3, 4, 5];
$new_array = array_map(function($var) {
    return $var * 2;
}, $array);
print_r($new_array); // 输出 [2, 4, 6, 8, 10]

3. array_walk()

array_walk() 函数可以对数组中的每个元素应用一个回调函数,但不返回新数组。它的语法如下:

代码语言:php复制
array_walk($array, $callback);

其中 $array 是要遍历的数组变量名,$callback 是回调函数,用于处理每个元素。

例如,我们可以使用以下代码将数组中的每个元素都打印出来:

代码语言:php复制
$array = [1, 2, 3, 4, 5];
array_walk($array, function($value, $key) {
    echo "[$key] => $valuen";
});
// 输出:
// [0] => 1
// [1] => 2
// [2] => 3
// [3] => 4
// [4] => 5

4. array_reduce()

array_reduce() 函数可以对数组中的元素进行累积计算,并返回最终结果。它的语法如下:

代码语言:php复制
$result = array_reduce($array, $callback, $initial);

其中 $array 是要遍历的数组变量名,$callback 是回调函数,用于计算累积结果,$initial 是初始值。回调函数需要接收两个参数:上一次的累积结果和当前值。

例如,我们可以使用以下代码计算数组中所有元素的和:

代码语言:php复制
$array = [1, 2, 3, 4, 5];
$sum = array_reduce($array, function($carry, $item) {
    return $carry   $item;
}, 0);
echo $sum; // 输出 15

以上是 array_filter()array_map()array_walk()array_reduce() 这四个函数的用法和区别。它们都是常见的数组遍历函数,在实际开发中很有用处。

0 人点赞