php函数array_map的有趣应用

本文介绍了一种使用PHP中的array_map函数简化数组合并的方法。通过对array_map函数特性的巧妙利用,可以在一行代码内完成原本需要循环操作的数组合并任务,提高了代码的简洁性和可读性。

array_map本身是用来遍历数组修改键值的,不过今天发现它除了可以用来修改数组以外还有个非常实用的技巧


在这样的场景中,我们有hotel_id数组

$arr_hotel_ids = array(1001,1002,1003)

通过传入$arr_hotel_ids到func1,返回了对应顺序的

$arr_hotel_name = array("h1", "h2", "h3"),

再通过传入$arr_hotel_ids到func2,返回了对应顺序的

$arr_hotel_price = array(1,2,3),

那么现在有了三个数组

$arr_hotel_price

$arr_hotel_name

$arr_hotel_price

他们的顺序是对应的,怎么样把他们合并成一个数组呢?

直觉是

foreach($arr_hotel_price as $key=>$v)

        $merged_arr[] = array($v,  $arr_hotel_name[$key],  $arr_hotel_price[$key]);


当然代码看起来也还不太冗余~不过只是为了说明array_map的技巧,这里可以用一句话解决
$merged_arr = array_map(NULL, $arr_hotel_ids , $arr_hotel_name,  $arr_hotel_price);
array_map的功能是遍历数组,使用call_back_func对每一个数组相同key进行处理后返回一个值。

如果传入的call_back_func为NULL,将不对key做任何处理直接返回合并的数组。也就能代替我们刚才的两行代码。

PS:
我觉得很多这种技巧虽然看起来很奇怪,解决的问题也不大(不过把代码从2行变为1行),
不过假如这个结果只是临时需要作为函数参数传入某个函数a(),传统的方式我们需要3行,
foreach($arr_hotel_price as $key=>$v)
        $merged_arr[] = array($v,  $arr_hotel_name[$key],  $arr_hotel_price[$key]);

a($merged_arr);


如果使用有返回值的array_map,可以变为

a( array_map(NULL, $arr_hotel_ids , $arr_hotel_name,  $arr_hotel_price));


直接使用返回值作为参数,还避免了临时变量的使用,这又是一个应用场合。
技巧虽然比较偏,但是如果能经常积累这样的技巧就可以增加不小的开发效率,而且代码可维护性也会增强不小~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值