array_map 与array_walk的用法与区别

  array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。 回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。 <!-- more --> array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。


回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。



提示:您可以向函数输入一个或者多个数组。



语法
array_map(myfunction,array1,array2,array3…)
参数 描述
myfunction 必需。用户自定义函数的名称,或者是 null。
array1 必需。规定数组。
array2 可选。规定数组。
array3 可选。规定数组。



//这里可以传递多个数组作为参数,与之对应的,myfunction()函数中也要有多个参数。是一一对应的关系
array_map(myfunction,array1,array2,array3…)



array_walk() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。



用法:array_walk(array,myfunction,userdata…)



这里的例子看文档就可以,比较清楚。需要注意的是该函数的返回值是bool值



定义和用法
array_walk() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。



注释:您可以通过把用户自定义函数中的第一个参数指定为引用:&$value,来改变数组元素的值(参见实例 2)。



提示:如需操作更深的数组(一个数组中包含另一个数组),请使用 array_walk_recursive() 函数。



语法
array_walk(array,myfunction,userdata…)
参数 描述
array 必需。规定数组。
myfunction 必需。用户自定义函数的名称。
userdata,… 可选。规定用户自定义函数的参数。您能够向此函数传递任意多参数。
说明
array_walk() 函数对数组中的每个元素应用回调函数。如果成功则返回 TRUE,否则返回 FALSE。



典型情况下 myfunction 接受两个参数。array 参数的值作为第一个,键名作为第二个。如果提供了可选参数 userdata ,将被作为第三个参数传递给回调函数。



如果 myfunction 函数需要的参数比给出的多,则每次 array_walk() 调用 myfunction 时都会产生一个 E_WARNING 级的错误。这些警告可以通过在 array_walk() 调用前加上 PHP 的错误操作符 @ 来抑制,或者用 error_reporting()。



注释:如果回调函数需要直接作用于数组中的值,可以将回调函数的第一个参数指定为引用:&$value。(参见例子 3)



注释:将键名和 userdata 传递到 myfunction 中是 PHP 4.0 新增加的。



1、array_map的用法是array_map(函数名,数组),而array_walk的用法是array_walk(数组,函数名);



2、array_map里面的函数可以是自定义函数,也可以是php自带的函数,比如trim去除空格等。而array_walk里面的函数只能是自定义的函数



3、array_map不可以改变原函数的值,会获取到新的数组。array_walk是可以改变原函数的值的(加个引用)。



4、array_map必须要有返回值,因为要填充数组。而array_walk可以没有返回值,输出的话要在调用的函数中通过echo来输出。
这两个函数有个共同点就是可以简化我们的代码,有些简单的foreach循环替换功能,完全可以用这两个函数来实现。


Category lang