我正在处理未由我编写的代码。我发现开发者想修剪阵列中的所有元素并使用array_walk()
,但声明_trim
函数的意义在于使用标准trim()
?当使用array_walk()时此技术是必需的
array_walk($arr, '_trim');
function _trim(&$value)
{
$value = trim($value);
}
我正在处理未由我编写的代码。我发现开发者想修剪阵列中的所有元素并使用array_walk()
,但声明_trim
函数的意义在于使用标准trim()
?当使用array_walk()时此技术是必需的
array_walk($arr, '_trim');
function _trim(&$value)
{
$value = trim($value);
}
是的,array_walk这将是必要的,因为调用按引用的。在这种情况下,将在我看来最好使用array_map:
$arr = array_map('trim', $arr);
是的。像manual说:
如果funcname的需要与阵列的实际值是工作,指定funcname的作为参考的第一个参数。然后,对这些元素所做的任何更改都将在原始数组中进行。
这或许会更容易使用array_map
:
$arr = array_map('trim', $arr);
trim
返回修剪值,它不会修改传递的值。
array_walk($ arr,'trim');
,如果你有一个正常的修剪执行array_walk你会看到,它不会做任何事情:
您还可以使用匿名函数修剪数组元素。在array_map
的好处是,你可以使用array_walk
递归:
array_walk_recursive($arr, function(&$v) {
$v = trim($v);
});
这样他就可以通过引用传递 –