究竟是什么之间的区别array_map,array_walk和array_filter。我从文档中可以看到,您可以传递一个回调函数来对提供的数组执行操作。但是我似乎没有发现它们之间有什么特别的区别。
他们执行相同的事情吗? 它们可以互换使用吗?
如果它们完全不同,请提供示例说明,我们将不胜感激
将功能映射到数据数组的想法来自功能编程。您不应该将其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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。