开发者社区> 问答> 正文

array_map,array_walk和array_filter之间的区别

究竟是什么之间的区别array_map,array_walk和array_filter。我从文档中可以看到,您可以传递一个回调函数来对提供的数组执行操作。但是我似乎没有发现它们之间有什么特别的区别。

他们执行相同的事情吗? 它们可以互换使用吗?

如果它们完全不同,请提供示例说明,我们将不胜感激

展开
收起
保持可爱mmm 2020-01-15 16:25:04 493 0
1 条回答
写回答
取消 提交回答
  • 将功能映射到数据数组的想法来自功能编程。您不应该将其array_map视为foreach在数组的每个元素上调用函数的循环(即使这是实现它的方式)。应该考虑将函数独立地应用于数组中的每个元素。

    从理论上讲,诸如函数映射之类的事情可以并行完成,因为应用于数据的函数应该只影响数据,而不影响全局状态。这是因为array_map可以选择将功能应用到项目的顺序(即使在PHP中不是这样)。

    array_walk另一方面,它是处理数据数组的完全相反的方法。它使用状态(&$userdata)而不是分别处理每个项目,并且可以就地编辑该项目(很像foreach循环)。由于每次将项目$funcname应用到它,它可能会更改程序的全局状态,因此需要一种正确的方式来处理项目。

    早在PHP的土地,array_map以及array_walk几乎相同,除了array_walk让你更好地控制数据的重复,并且通常用来“改变”数据就地和回访新的“改变”阵列。

    array_filter实际上是array_walk(或array_reduce)的应用程序,或多或少只是为了方便而提供的。

    问题来源于stack overflow

    2020-01-15 16:26:00
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载