PHP数组函数: array_walk()与 array_map() 的区别

实际应用中的一点区别与总结:

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

1 <?php
2 function myfunction($value$key) {
3     echo "The key $key has the value $value<br />";
4 }
5  
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

带有一个参数: 

1 <?php
2 function myfunction($value$key$p) {
3     echo "$key $p $value<br />";
4 }
5  
6 $a array("a" => "Cat""b" => "Dog""c" => "Horse");
7 array_walk($a"myfunction""has the value");
8 ?>

输出:

a has the value Cat
b has the value Dog
c has the value Horse

例子 3 

改变数组元素的值(请注意 &$value):(这种情况用的比较多!)

1 <?php
2 function myfunction(&$value$key) {
3     $value "Bird";
4 }
5  
6 $a array("a" => "Cat""b" => "Dog""c" => "Horse");
7 array_walk($a"myfunction");
8 print_r($a);

输出:

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 

01 <?php
02 function myfunction($v) {
03     if ($v === "Dog") {
04         return "Fido";
05     }
06     return $v;
07 }
08  
09 $a array("Horse""Dog""Cat");
10 print_r(array_map("myfunction"$a));
11 ?>

输出:

Array ( [0] => Horse [1] => Fido [2] => Cat )

例子 2 

使用多个参数:

01 <?php
02 function myfunction($v1$v2) {
03     if ($v1 === $v2) {
04         return "same";
05     }
06     return "different";
07 }
08  
09 $a1 array("Horse""Dog""Cat");
10 $a2 array("Cow""Dog""Rat");
11 print_r(array_map("myfunction"$a1$a2));
12 ?>

输出:

Array ( [0] => different [1] => same [2] => different )

例子 3 

请看当自定义函数名设置为 null 时的情况:

1 <?php
2 $a1 array("Dog""Cat");
3 $a2 array("Puppy""Kitten");
4 print_r(array_map(null, $a1$a2));
5 ?>

输出:

Array (
[0] => Array ( [0] => Dog [1] => Puppy )
[1] => Array ( [0] => Cat [1] => Kitten )
)

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值