首页  >  文章  >  后端开发  >  array_map、array_walk 和 array_filter 在 PHP 中的行为和用法有何不同?

array_map、array_walk 和 array_filter 在 PHP 中的行为和用法有何不同?

DDD
DDD原创
2024-11-03 13:06:03971浏览

How do array_map, array_walk, and array_filter differ in their behavior and usage in PHP?

PHP 中 array_map、array_walk 和 array_filter 的区别

虽然 array_map、array_walk 和 array_filter 都是以回调函数作为回调函数的 PHP 函数参数对数组执行操作,它们的行为有细微的差别用法。

主要区别:

1.值修改:
array_map 无法修改输入数组中的值,而 array_walk 可以。这是因为 array_map 使用回调函数的结果创建一个新数组,而 array_walk 则就地修改输入数组。

2.数组键访问:
array_map 无法对数组键进行操作,而 array_walk 可以。这意味着 array_walk 可以根据数组的值和键执行操作。

3.返回值:
array_map 返回一个包含回调函数结果的新数组,而如果回调函数成功应用于输入数组的所有元素,则 array_walk 返回 true。

4.多个数组迭代:
array_map 可以接受多个数组作为输入并并行迭代它们,从而允许同时对多个数组进行操作。另一方面,array_walk 仅对一个数组进行操作。

5.回调参数传递:
array_walk 允许将额外的任意参数传递给回调函数,为回调中执行的操作提供灵活性。

6.返回的数组长度:
array_map 生成一个与最大输入数组长度相同的结果数组。 array_walk 不返回数组,并且无法更改输入数组中的元素数量。 array_filter 根据过滤函数返回原始数组的子集,并保留原始键。

示例:

考虑以下代码:

<code class="php">$a1 = array(2.4, 2.6, 3.5);
$a2 = array(2.4, 2.6, 3.5);

array_map('floor', $a1); // $a1 remains unchanged
array_walk($a2, function (&$v) { $v = floor($v); }); // modifies $a2</code>

在第一种情况下,array_map 使用 $a1 中每个元素的下限值创建一个新数组,但 $a1 本身仍然保留未经修改。在第二种情况下,array_walk 直接修改 $a2 的元素,将它们向下舍入到最接近的整数。

以上是array_map、array_walk 和 array_filter 在 PHP 中的行为和用法有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn