array_map与array_walk的用法与区别详解

这两个函数有个共同点就是可以简化我们的代码,有些简单的foreach循环替换功能,完全可以用这两个函数来实现。

区别

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

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

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

4、array_map必须要有返回值,因为要填充数组。而array_walk可以没有返回值,输出的话要在调用的函数中通过echo来输出。

5、array_map可以传多个数组作为函数参数,array_walk可以额外传一个参数作为回调函数第三个参数,该参数不是必须为数组的

6、array_walk的第一个参数数组的key和value作为第二个参数函数的前两个参数,第一个参数为value,第二个为key

7、array_map使用的回调函数只能获取到数组的元素

array_map:

<?php
function myfunction($v)
{
   return($v*$v);
}

$a=array(1,2,3,4,5);
print_r(array_map("myfunction",$a));
?>

 

 使用php内置函数trim,去除数组元素首尾空白字符:

<?php

$a=array(" 1 "," 2","3 ","2","1");
var_dump(array_map("trim",$a));
?>

array_map:传入多个数组:

<?php
function myfunction($v,$vv)
{
   return($v*$vv);
}

$a=array(1,2,3,4,5);
$b=array(6,7,8,9);
print_r(array_map("myfunction",$a,$b));
?>

很明显b数组比a数组少了一个元素,最终新数组第五个元素的值就变成了0! 

araay_walk:

<?php
function myfunction($value,$key)
{
   echo "The key $key has the value $value<br>";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction");
?>

通过传引用修改数组元素即value:

<?php
function myfunction(&$value,$key)//key不能被修改
{
   $value.="1";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction");
echo '<pre>';
print_r($a);
?>

 

传入第三个参数作为回调函数的第三个参数:

<?php
function myfunction(&$value,$key,$num1)//key不能被修改
{
   $value.=$num1;
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction",3);
echo '<pre>';
print_r($a);
?>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值