2011-10-12 73 views
3

我正在处理未由我编写的代码。我发现开发者想修剪阵列中的所有元素并使用array_walk(),但声明_trim函数的意义在于使用标准trim()当使用array_walk()时此技术是必需的

array_walk($arr, '_trim'); 

function _trim(&$value) 
{ 
    $value = trim($value); 
} 
+2

这样他就可以通过引用传递 –

回答

16

是的,array_walk这将是必要的,因为调用按引用的。在这种情况下,将在我看来最好使用array_map:

$arr = array_map('trim', $arr); 
2

是的。像manual说:

如果funcname的需要与阵列的实际值是工作,指定funcname的作为参考的第一个参数。然后,对这些元素所做的任何更改都将在原始数组中进行。

这或许会更容易使用array_map

$arr = array_map('trim', $arr); 
1

trim返回修剪值,它不会修改传递的值。

array_walk($ arr,'trim');

,如果你有一个正常的修剪执行array_walk你会看到,它不会做任何事情:

2

您还可以使用匿名函数修剪数组元素。在array_map的好处是,你可以使用array_walk递归

array_walk_recursive($arr, function(&$v) { 
    $v = trim($v); 
});