array_walk_recursive用于遍历多维数组并对每个值执行回调函数,支持传入额外参数,可修改原始数组的值但不能处理键名或对象,适用于无需关心层级深度的简单场景。
在PHP中,array_walk_recursive 是一个用于对数组中的每个元素(包括多维数组的深层元素)执行用户自定义函数的函数。它适用于你想遍历嵌套数组并对每个值进行处理,而不需要关心层级深度。
该函数成功时返回 true。
假设你有一个包含姓名和成绩的多维数组,想把所有字符串转为大写:
$grades = [ 'math' => ['alice' => 90, 'bob' => 85], 'english' => ['charlie' => 78, 'diana' => 92] ]; array_walk_recursive($grades, function(&$value, $key) { if (is_string($value)) { $value = strtoupper($value); } }); print_r($grades);输出结果中,'alice'、'bob' 等名字都会变成大写。注意:这里修改的是原始数组,因为值是按引用传入的。
你可以通过第三个参数向回调函数传递额外信息。例如,给所有数值加上一个偏移量:
function addOffset(&$value, $key, $offset) { if (is_numeric($value)) { $value += $o
ffset;
}
}
$scores = [
'user1' => ['round1' => 80, 'round2' => 88],
'user2' => ['round1' => 75, 'round2' => 90]
];
array_walk_recursive($scores, 'addOffset', 5);
print_r($scores);
现在每个分数都增加了5分。第三个参数 $offset 被传入了回调函数。