我正在研究不是我编写的代码。我看到开发人员想要修剪数组的所有元素并使用array_walk()
,但是声明_trim
函数的重点是它使用标准trim()
?
array_walk($arr, '_trim');
function _trim(&$value)
{
$value = trim($value);
}
答案 0 :(得分:16)
是的,对于array_walk,由于call-by-reference,它是必要的。在这种情况下,我认为最好使用array_map:
$arr = array_map('trim', $arr);
答案 1 :(得分:2)
是。就像manual所说:
如果 funcname 需要使用数组的实际值,请指定 funcname 的第一个参数作为参考。然后,对这些元素所做的任何更改都将在原始数组中进行。
使用array_map
可能更容易:
$arr = array_map('trim', $arr);
答案 2 :(得分:2)
您还可以使用匿名函数修剪数组元素。优于array_map
的优势在于您可以递归使用array_walk
:
array_walk_recursive($arr, function(&$v) {
$v = trim($v);
});
答案 3 :(得分:1)
trim
返回一个修剪过的值,它不会修改传递的值。
array_walk($ arr,'trim');
如果你使用普通修剪执行array_walk,你会发现它没有做任何事情: