PHP 中 array_walk 与array_map的区别
PHP 中 array_walk 与array_map的区别
array_map
函数来对数组中的每个元素应用回调函数。该函数与 array_walk
类似,但是它返回一个新的数组,而不是直接修改原始数组。
在 PHP 中,可以使用 array_walk
函数来遍历数组并执行自定义的操作。该函数接受三个参数:要遍历的数组、回调函数和数组元素的索引。回调函数应该接受三个参数:数组元素、元素索引和数组本身。以下是一个示例:
function my_callback_function($value, $index, $array) {
// 在此处添加自定义操作
}
$array = array(
"apple",
"banana",
"orange"
);
array_walk($array, "my_callback_function");
在这个例子中,我们定义了一个名为 my_callback_function
的回调函数,它接受三个参数并在数组中遍历每个元素。在 my_callback_function
中,我们可以添加任何自定义操作,例如打印元素或修改元素值。最后,我们使用 array_walk
函数来遍历数组并执行 my_callback_function
函数。
另外,也可以使用 array_map
函数来对数组中的每个元素应用回调函数。该函数与 array_walk
类似,但是它返回一个新的数组,而不是直接修改原始数组。以下是一个示例:
function my_callback_function($value, $index, $array) {
// 在此处添加自定义操作
return $value * 2;
}
$array = array(
"apple",
"banana",
"orange"
);
$new_array = array_map("my_callback_function", $array);
print_r($new_array);
在这个例子中,我们定义了一个与 my_callback_function
函数相同的回调函数,但是我们使用 array_map
函数来对数组中的每个元素应用该函数,并返回一个新的数组。在 array_map
函数中,我们只需传递回调函数作为第一个参数,并传递数组作为第二个参数。最后,我们使用 print_r
函数来打印新的数组。
在这个例子中,我们定义了一个名为 my_callback_function
的回调函数,它接受三个参数并在数组中遍历每个元素。在 my_callback_function
中,我们将元素值乘以2,并将结果作为新的值返回。然后,我们使用 array_map
函数来遍历数组并对每个元素应用 my_callback_function
函数。最后,我们打印新的数组,它包含了原始数组中的每个元素的两倍。
需要注意的是,如果回调函数中使用了数组的索引,那么这个索引值也会被添加到新的数组中。例如,在以下代码中,我们将回调函数修改为将每个元素值加上一个整数:
function my_callback_function($value, $index, $array) {
// 在此处添加自定义操作
return $value + $index;
}
$array = array(
"apple",
"banana",
"orange"
);
$new_array = array_map("my_callback_function", $array);
print_r($new_array);
在这个例子中,回调函数 my_callback_function
将每个元素值加上当前索引值,例如,对于数组中的第一个元素 "apple"
,它的值会被加上1,变成 "apple1"
。最终输出的新数组如下所示:
Array
(
[0] => apple2
[1] => banana3
[2] => orange4
)
需要注意的是,array_map
函数只会修改原始数组中的值,而不会创建一个新的数组。如果需要创建一个新的数组,请使用 array_merge
函数来将原始数组和新数组合并起来。例如,以下代码将创建一个新的数组,其中包含原始数组和应用回调函数后的新数组的所有元素:
$new_array = array_merge(array(0), array(1, 2, 3), array_map("my_callback_function", array(4, 5, 6)));
print_r($new_array);
在这个例子中,我们使用 array_merge
函数将一个整数数组和一个数组列表合并成一个新的整数数组。然后,我们使用 array_map
函数遍历原始数组中的每个元素,并将其添加到新的数组中。最终输出的新数组如下所示:
Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => apple2
[5] => banana3
[6] => orange4
[7] => 5
[8] => 6
)
在PHP中,array_walk
和array_map
都是用于处理数组的内置函数,但它们的作用有所不同。
array_walk
函数会遍历数组,并对数组中的每个元素执行给定的回调函数。回调函数可以接收三个参数:数组元素、数组的键名和数组的键值。因此,array_walk
函数适用于需要对数组中的每个元素进行处理的情况。
而array_map
函数会遍历数组,并对数组中的每个元素执行给定的回调函数,并将回调函数的结果存储在一个新数组中返回。因此,array_map
函数适用于需要对数组中的每个元素进行处理,并返回一个新数组的情况。
综上所述,array_walk
和array_map
的区别在于:array_walk
适用于对数组中的每个元素进行处理,并返回结果;而array_map
适用于对数组中的每个元素进行处理,并返回一个新数组。
欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。
Don’t reinvent the wheel, library code is there to help.
文章来源:刘俊涛的博客
若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)
你要保守你心,胜过保守一切。
本文来自博客园,作者:刘俊涛的博客,转载请注明原文链接:https://www.cnblogs.com/lovebing/p/17675390.html