首页 > 编程语言 >PHP 中 array_walk 与array_map的区别

PHP 中 array_walk 与array_map的区别

时间:2023-09-03 19:11:20浏览次数:40  
标签:function map 函数 数组 array PHP my

PHP 中 array_walk 与array_map的区别

array_map 函数来对数组中的每个元素应用回调函数。该函数与 array_walk 类似,但是它返回一个新的数组,而不是直接修改原始数组。

在 PHP 中,可以使用 array_walk 函数来遍历数组并执行自定义的操作。该函数接受三个参数:要遍历的数组、回调函数和数组元素的索引。回调函数应该接受三个参数:数组元素、元素索引和数组本身。以下是一个示例:

function my_callback_function($value, $index, $array) {
    // 在此处添加自定义操作
}

$array = array(
    "apple",
    "banana",
    "orange"
);

array_walk($array, "my_callback_function");

在这个例子中,我们定义了一个名为 my_callback_function 的回调函数,它接受三个参数并在数组中遍历每个元素。在 my_callback_function 中,我们可以添加任何自定义操作,例如打印元素或修改元素值。最后,我们使用 array_walk 函数来遍历数组并执行 my_callback_function 函数。

另外,也可以使用 array_map 函数来对数组中的每个元素应用回调函数。该函数与 array_walk 类似,但是它返回一个新的数组,而不是直接修改原始数组。以下是一个示例:

function my_callback_function($value, $index, $array) {
    // 在此处添加自定义操作
    return $value * 2;
}

$array = array(
    "apple",
    "banana",
    "orange"
);

$new_array = array_map("my_callback_function", $array);

print_r($new_array);

在这个例子中,我们定义了一个与 my_callback_function 函数相同的回调函数,但是我们使用 array_map 函数来对数组中的每个元素应用该函数,并返回一个新的数组。在 array_map 函数中,我们只需传递回调函数作为第一个参数,并传递数组作为第二个参数。最后,我们使用 print_r 函数来打印新的数组。

在这个例子中,我们定义了一个名为 my_callback_function 的回调函数,它接受三个参数并在数组中遍历每个元素。在 my_callback_function 中,我们将元素值乘以2,并将结果作为新的值返回。然后,我们使用 array_map 函数来遍历数组并对每个元素应用 my_callback_function 函数。最后,我们打印新的数组,它包含了原始数组中的每个元素的两倍。

需要注意的是,如果回调函数中使用了数组的索引,那么这个索引值也会被添加到新的数组中。例如,在以下代码中,我们将回调函数修改为将每个元素值加上一个整数:

function my_callback_function($value, $index, $array) {
    // 在此处添加自定义操作
    return $value + $index;
}

$array = array(
    "apple",
    "banana",
    "orange"
);

$new_array = array_map("my_callback_function", $array);

print_r($new_array);

在这个例子中,回调函数 my_callback_function 将每个元素值加上当前索引值,例如,对于数组中的第一个元素 "apple",它的值会被加上1,变成 "apple1"。最终输出的新数组如下所示:

Array
(
    [0] => apple2
    [1] => banana3
    [2] => orange4
)

需要注意的是,array_map 函数只会修改原始数组中的值,而不会创建一个新的数组。如果需要创建一个新的数组,请使用 array_merge 函数来将原始数组和新数组合并起来。例如,以下代码将创建一个新的数组,其中包含原始数组和应用回调函数后的新数组的所有元素:

$new_array = array_merge(array(0), array(1, 2, 3), array_map("my_callback_function", array(4, 5, 6)));

print_r($new_array);

在这个例子中,我们使用 array_merge 函数将一个整数数组和一个数组列表合并成一个新的整数数组。然后,我们使用 array_map 函数遍历原始数组中的每个元素,并将其添加到新的数组中。最终输出的新数组如下所示:

Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => apple2
    [5] => banana3
    [6] => orange4
    [7] => 5
    [8] => 6
)

在PHP中,array_walkarray_map都是用于处理数组的内置函数,但它们的作用有所不同。

array_walk函数会遍历数组,并对数组中的每个元素执行给定的回调函数。回调函数可以接收三个参数:数组元素、数组的键名和数组的键值。因此,array_walk函数适用于需要对数组中的每个元素进行处理的情况。

array_map函数会遍历数组,并对数组中的每个元素执行给定的回调函数,并将回调函数的结果存储在一个新数组中返回。因此,array_map函数适用于需要对数组中的每个元素进行处理,并返回一个新数组的情况。

综上所述,array_walkarray_map的区别在于:array_walk适用于对数组中的每个元素进行处理,并返回结果;而array_map适用于对数组中的每个元素进行处理,并返回一个新数组。



欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。

公众号

Don’t reinvent the wheel, library code is there to help.

文章来源:刘俊涛的博客


若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)

标签:function,map,函数,数组,array,PHP,my
From: https://www.cnblogs.com/lovebing/p/17675390.html

相关文章

  • PHP extract() 函数
    PHPextract()Function定义和用法extract()函数从数组中将变量导入到当前的符号表。该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。第二个参数type用于指定当某个变量已经存在,而数组中又有同名元素时,ext......
  • Map
    MapMap对象保存键值对。任何值(对象或者基本类型)都可以作为一个键或一个值。#实例属性#size返回值Map对象的成员数量。constmap1=newMap<string,string>();map1.set('a','alpha');map1.set('b','beta');map1.set('g','gamma');consol......
  • array
    ArrayArray对象是用于构造数组的全局对象,数组是类似于列表的高阶对象。#实例属性#lengthlength是Array的实例属性,表示该数组中元素的个数。该值是一个无符号32位整数,并且其数值总是大于数组最大索引。constclothing=['shoes','shirts','socks','sweaters'];con......
  • JDK源码阅读:ArrayList原理
    ArrayList原理ArrayList集合底层数据结构ArrayList集合介绍List接口的可调整大小的数组实现。数组:一旦初始化长度就不可以发生改变数组结构特性增删慢:每次删除元素,都需要更改数组长度、拷贝以及移动元素位置。查询快:由于数组在内存中是一块连续空间,因此可以根据地址+索引的......
  • KdMapper扩展中遇到的相关问题
    1.背景  KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本人在利用其它漏洞(参考《【转载】利用签名驱动漏洞加载未签名驱动》)做相应的修改以实现类似功能。在这其中遇到了两个重要的问题,记录下来以作参考。 2.CallKernelFunction问题及修改  2.1相关......
  • ⏱️TimeHelper——一个简单快捷的PHP日期时间助手类库
    TimeHelper是一个简单易用的PHP时间日期助手类库,可以快速实现常用的时间日期操作,比如获取指定时间的秒数,获取友好的时间格式,判断时间范围,计算两个时间相差值,返回N小时/天/星期/月/年前或者后的时间戳等等......
  • win2016搭建frp内网穿透的FTP服务器可用phpstorm
    操作系统:WindowsServer2016StandardFTP服务器:ser-U7.0.0.1之前用FileZillaServer,但phpstorm怎么连接不上FTP,最后安装Ser—U使用了SSH模式成功连通。下载安装Ser-U创建域域名信息随便写,没有意义SSH的SFTP一定要打开添加用户frpc开通内网穿透端口frpc相关配......
  • linux教程:vm.max_map_count参数详解
    vm.max_map_count是一个与内核虚拟内存子系统相关的参数,用于控制进程可以拥有的内存映射区域的最大数量。它通常用于限制一个进程可以打开的文件数量,特别是在使用大量内存映射文件的情况下。在Linux系统上,vm.max_map_count参数的默认值通常是较小的数值,例如65530。然而,对于一些需要......
  • php:查看安装时的编译参数(php 8.2.5)
    一,用-i参数[liuhongdi@img~]$/usr/local/soft/php8.2.5/bin/php-i|grepconfigureConfigureCommand=>  './configure'  '--prefix=/usr/local/soft/php8.2.5''--with-config-file-path=/usr/local/soft/php8.2.5/etc''--with-c......
  • php:命令行的常用例子(php 8.2.5)
    一,查看安装配置信息[liuhongdi@img~]$/usr/local/soft/php8.2.5/bin/php-i           相当于执行:[liuhongdi@img~]$/usr/local/soft/php8.2.5/bin/php-r"phpinfo();”二,列出开启的扩展模块:[liuhongdi@img~]$/usr/local/soft/php8.2.5/bin/php-m[......