使用array_walk()时是否需要此技术

时间:2011-10-12 22:02:21

标签: php arrays

我正在研究不是我编写的代码。我看到开发人员想要修剪数组的所有元素并使用array_walk(),但是声明_trim函数的重点是它使用标准trim()

array_walk($arr, '_trim');

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

4 个答案:

答案 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,你会发现它没有做任何事情: