日常开发中,也不能总用foreach 和 for,尤其数组的一些遍历函数,非常高效。
array_filter()
、array_map()
、array_walk()
和 array_reduce()
是常见的数组遍历函数。它们有不同的功能和用法:
1. array_filter()
array_filter()
函数可以过滤数组中的元素,并返回符合条件的元素组成的新数组。它的语法如下:
$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()
函数可以对数组中的每个元素应用一个回调函数,并返回处理后的新数组。它的语法如下:
$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()
函数可以对数组中的每个元素应用一个回调函数,但不返回新数组。它的语法如下:
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()
函数可以对数组中的元素进行累积计算,并返回最终结果。它的语法如下:
$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()
这四个函数的用法和区别。它们都是常见的数组遍历函数,在实际开发中很有用处。