实际应用中的一点区别与总结:
array_walk() 主要用于对某个数组的迭代,相当于 foreach;
array_map() 主要是根据某个/某几个数组产生一个新的数组,常应用于递归效果!
array_map()
定义和用法
array_walk() 函数对数组中的每个元素应用回调函数。如果成功则返回 TRUE,否则返回 FALSE。
典型情况下 function 接受两个参数。array 参数的值作为第一个,键名作为第二个。如果提供了可选参数 userdata ,将被作为第三个参数传递给回调函数。
如果 function 函数需要的参数比给出的多,则每次 array_walk() 调用 function 时都会产生一个 E_WARNING 级的错误。这些警告可以通过在 array_walk() 调用前加上 PHP 的错误操作符 @ 来抑制,或者用 error_reporting()。
语法
array_walk(array,function,userdata...)
参数 | 描述 |
---|
array | 必需。规定数组。 |
function | 必需。用户自定义函数的名称。 |
userdata | 可选。用户输入的值,可作为回调函数的参数。 |
提示和注释
提示:您可以为函数设置一个或多个参数。
注释:如果回调函数需要直接作用于数组中的值,可以将回调函数的第一个参数指定为引用:&$value。(参见例子 3)
注释:将键名和 userdata 传递到 function 中是 PHP 4.0 新增加的。
例子 1
2 | function myfunction( $value , $key ) { |
3 | echo "The key $key has the value $value<br />" ; |
6 | $a = array ( "a" => "Cat" , "b" => "Dog" , "c" => "Horse" ); |
7 | array_walk ( $a , "myfunction" ); |
输出:
The key a has the value Cat
The key b has the value Dog
The key c has the value Horse
例子 2
带有一个参数:
2 | function myfunction( $value , $key , $p ) { |
3 | echo "$key $p $value<br />" ; |
6 | $a = array ( "a" => "Cat" , "b" => "Dog" , "c" => "Horse" ); |
7 | array_walk ( $a , "myfunction" , "has the value" ); |
输出:
a has the value Cat
b has the value Dog
c has the value Horse
例子 3
改变数组元素的值(请注意 &$value):(这种情况用的比较多!)
2 | function myfunction(& $value , $key ) { |
6 | $a = array ( "a" => "Cat" , "b" => "Dog" , "c" => "Horse" ); |
7 | array_walk ( $a , "myfunction" ); |
输出:
Array ( [a] => Bird [b] => Bird [c] => Bird )
array_map()
定义和用法
array_map() 函数返回用户自定义函数作用后的数组。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
语法
array_map(function,array1,array2,array3...)
参数 | 描述 |
---|
function | 必需。用户自定义函数的名称,或者是 null。 |
array1 | 必需。规定数组。 |
array2 | 可选。规定数组。 |
array3 | 可选。规定数组。 |
例子 1
02 | function myfunction( $v ) { |
09 | $a = array ( "Horse" , "Dog" , "Cat" ); |
10 | print_r( array_map ( "myfunction" , $a )); |
输出:
Array ( [0] => Horse [1] => Fido [2] => Cat )
例子 2
使用多个参数:
02 | function myfunction( $v1 , $v2 ) { |
09 | $a1 = array ( "Horse" , "Dog" , "Cat" ); |
10 | $a2 = array ( "Cow" , "Dog" , "Rat" ); |
11 | print_r( array_map ( "myfunction" , $a1 , $a2 )); |
输出:
Array ( [0] => different [1] => same [2] => different )
例子 3
请看当自定义函数名设置为 null 时的情况:
2 | $a1 = array ( "Dog" , "Cat" ); |
3 | $a2 = array ( "Puppy" , "Kitten" ); |
4 | print_r( array_map (null, $a1 , $a2 )); |
输出:
Array (
[0] => Array ( [0] => Dog [1] => Puppy )
[1] => Array ( [0] => Cat [1] => Kitten )
)