使用 array_walk 还是 array_map?
在 PHP 中,我们经常需要对数组进行操作,比如对数组中的每个元素进行处理或者转换。为了实现这个目的,PHP 提供了两个非常常用的函数:array_walk 和 array_map。array_walk 函数用于对数组中的每个元素应用用户自定义的回调函数。它会遍历数组,并将每个元素传递给回调函数进行处理。回调函数可以修改原始数组中的元素,也可以返回一个新的值。array_walk 函数会直接修改原始数组。相比之下,array_map 函数则是返回一个新的数组,该数组的元素是通过回调函数对原始数组中的元素进行处理得到的。原始数组不会被修改。接下来,我们将通过一个案例来对比 array_walk 和 array_map 的使用。使用 array_walk 修改原始数组假设我们有一个存储学生考试成绩的数组,我们希望将每个学生的成绩都加上 10 分。我们可以使用 array_walk 来实现这个需求。php$grades = [80, 90, 75, 85];// 定义回调函数function addTen(&$value){ $value += 10;}// 使用 array_walk 修改原始数组array_walk($grades, 'addTen');// 打印修改后的数组print_r($grades);运行上述代码,输出结果为:Array( [0] => 90 [1] => 100 [2] => 85 [3] => 95)我们可以看到,通过使用 array_walk 函数,并传递一个回调函数 addTen,我们成功地将每个学生的成绩都加上了 10 分。原始数组 $grades 被直接修改了。使用 array_map 返回新的数组现在我们来使用 array_map 函数来完成同样的任务,但是返回一个新的数组,而不修改原始数组。
php$grades = [80, 90, 75, 85];// 定义回调函数function addTen($value){ return $value + 10;}// 使用 array_map 返回新的数组$newGrades = array_map('addTen', $grades);// 打印新的数组print_r($newGrades);运行上述代码,输出结果为:Array( [0] => 90 [1] => 100 [2] => 85 [3] => 95)我们可以看到,通过使用 array_map 函数,并传递一个回调函数 addTen,我们得到了一个新的数组 $newGrades,其中每个学生的成绩都加上了 10 分。原始数组 $grades 并没有被修改。array_walk 还是 array_map?在选择使用 array_walk 还是 array_map 时,我们需要考虑到我们的需求。如果我们希望直接修改原始数组,那么可以使用 array_walk。而如果我们希望得到一个新的数组,而不修改原始数组,那么可以使用 array_map。无论是 array_walk 还是 array_map,在处理数组时都非常方便实用。根据不同的需求,我们可以选择合适的函数来完成我们的任务。