php中array_walk函数是什么?

array_walk用于遍历并处理数组每个元素,通过回调函数对键值对执行操作,可修改原数组值。语法为array_walk(array &$array, callable $callback, mixed $userdata),$array为引用传入的数组,$callback为接收$value、$key和$userdata的回调函数,$userdata为可选数据。回调中需使用&$value才能修改原数组。例如添加前缀:array_walk($fruits, function(&$value, $key) { $value = "fruit: " . $value; });使["a"=>"apple"]变为["a"=>"fruit: apple"]。该函数返回bool,不保证顺序,不生成新数组,适用于需原地修改的场景。

array_walk 函数用于对数组中的每个元素应用一个自定义函数。它允许你遍历数组,并对每一个键值对执行指定的操作,常用于数据处理或格式化。

基本语法

array_walk(array &$array, callable $callback, mixed $userdata = null): bool

参数说明:

  • $array:要操作的数组,会以引用方式传入,但函数本身不修改数组结构(除非在回调中显式修改)。
  • $callback:被调用的回调函数,接收最多三个参数:当前元素的值、键名、以及可选的用户传入数据。
  • $userdata:可选参数,会传递给回调函数的第三个参数。

回调函数的结构

回调函数通常定义为:

function callback($value, $key, $userdata) { ... }

其中 $value 是当前元素的值,$key 是当前元素的键,$userdata 是额外传入的数据。由于数组是引用传递,若要在回调中修改原数组的值,需使用引用方式传值。

使用示例

例如,给数组每个元素添加前缀:

$fruits = ["a" => "apple", "b" => "banana"];
array_walk($fruits, function($value, $key) {
echo "$key => $value
";
});

输出:

a => apple
b => banana

若要修改原数组值,可以这样写:

array_walk($fruits, function(&$value, $key) {
$value = "fruit: " . $value;
});

此时 $fruits 数组内容变为:
["a" => "fruit: apple", "b" => "fruit: banana"]

注意事项

  • 该函数返回布尔值,成功为 true,失败为 false。
  • 不能保证遍历顺序,如需按特定顺序处理,应先排序数组。
  • 与 array_map 不同,array_walk 不生成新数组,而是直接操作原数组(需通过引用修改值)。
基本上就这些。这个函数适合需要逐项处理并可能修改原数组的场景。