PHP 中 array_walk 与array_map的区别

发布时间 2023-09-03 19:10:56作者: 刘俊涛的博客

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_walkarray_map都是用于处理数组的内置函数,但它们的作用有所不同。

array_walk函数会遍历数组,并对数组中的每个元素执行给定的回调函数。回调函数可以接收三个参数:数组元素、数组的键名和数组的键值。因此,array_walk函数适用于需要对数组中的每个元素进行处理的情况。

array_map函数会遍历数组,并对数组中的每个元素执行给定的回调函数,并将回调函数的结果存储在一个新数组中返回。因此,array_map函数适用于需要对数组中的每个元素进行处理,并返回一个新数组的情况。

综上所述,array_walkarray_map的区别在于:array_walk适用于对数组中的每个元素进行处理,并返回结果;而array_map适用于对数组中的每个元素进行处理,并返回一个新数组。



欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。

公众号

Don’t reinvent the wheel, library code is there to help.

文章来源:刘俊涛的博客


若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)