php函数array_map的有趣应用
2013-10-31 10:35
253 查看
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));
直接使用返回值作为参数,还避免了临时变量的使用,这又是一个应用场合。
技巧虽然比较偏,但是如果能经常积累这样的技巧就可以增加不小的开发效率,而且代码可维护性也会增强不小~
在这样的场景中,我们有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));
直接使用返回值作为参数,还避免了临时变量的使用,这又是一个应用场合。
技巧虽然比较偏,但是如果能经常积累这样的技巧就可以增加不小的开发效率,而且代码可维护性也会增强不小~
相关文章推荐
- C++STL库中map容器常用应用
- 黑马程序员——35,泛型应用和Map
- Message Flood——map初级应用
- map的一些高级应用
- 【Map集合总结】HashMap---Hashtable---TreeMap三者的区别和相关的应用!!
- 黑马程序员-Map的嵌套应用
- Uva1592 Database 【map应用】【例题5-9】
- Spring MVC+JQuery+Google Map打造IP位置查找应用(2)
- list map集合 遍历 应用
- java 用反射简单应用,将Object简单转换成map
- Google map api应用实例 1
- HDU 1004 Let the Balloon Rise Map的应用
- java中集合类list set map三者的区别和应用场合
- 杭电1004(map的应用)之Let the Balloon Rise
- JavaScript中Map的应用及Map中的bug
- python中map和reduce的应用
- STL-----MAP应用
- 内网用户通过公网IP地址访问内部服务器(华为DNS-MAP应用案例)
- MAP:移动应用部分--网络大典
- ip policy route-map在VLAN上不能应用的解决办法-SDM_quanshengaa-ChinaUnix博客