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中文网其他相关文章!