欢迎各位兄弟 发布技术文章
这里的技术是共享的
PHP中的array_map
和array_walk
都是用于遍历数组并对每个元素应用回调函数的函数,但它们之间有一些主要的区别:
用法和参数顺序:
array_map()
的用法是 array_map(callback, array1, array2, ...)
,其中回调函数在前面,然后是需要处理的数组。
array_walk()
的用法是 array_walk(array, callback)
,其中数组在前面,然后是回调函数。
返回值和修改原数组:
array_map()
会返回一个新的数组,该数组包含了回调函数处理后的新元素值,原始数组不会被改变。
array_walk()
不返回新的数组,而是直接在原地修改数组元素。它通常用于执行一些副作用操作,如修改、打印或计算值,而不是生成新数组。
回调函数要求:
array_map()
可以接受PHP内置函数或自定义函数作为回调。
array_walk()
的回调函数必须是自定义函数,因为需要访问到数组的键值对。
访问键值:
array_map()
的回调函数只接收数组的值作为参数。
array_walk()
的回调函数接收两个参数:当前值和对应的键(可选),这使得在处理元素时可以访问到其键。
返回值在回调中的作用:
在array_map()
中,回调函数的返回值会被用于填充新数组。
array_walk()
的回调函数不需要有明确的返回值,如果需要输出或者收集结果,通常需要在回调函数内部进行处理。
引用修改:
默认情况下,array_map()
不会通过引用修改原数组的元素。
array_walk()
可以通过在回调函数参数前添加&
符号来通过引用修改原数组的元素。
总的来说,如果你需要创建一个由原数组元素经过某种处理后生成的新数组,应该使用array_map()
。而如果你需要对数组中的每个元素执行某种操作(如修改、打印或计算),并且不关心返回的新数组,那么应使用array_walk()
。