前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >除了foreach 和 for,数组的一些遍历函数,也非常高效

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

原创
作者头像
Bolton
发布2023-06-02 22:48:22
2650
发布2023-06-02 22:48:22
举报
文章被收录于专栏:php&laravelphp&laravel

日常开发中,也不能总用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] => $value\n";
});
// 输出:
// [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() 这四个函数的用法和区别。它们都是常见的数组遍历函数,在实际开发中很有用处。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. array_filter()
  • 2. array_map()
  • 3. array_walk()
  • 4. array_reduce()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com