2

我无法弄清楚第一个 return 语句,有人可以帮忙解释它是如何工作的吗?array_map接受第一个参数的函数,但这里是一个数组。以及如何array(&$this, '_trimData')工作?谢谢你的解释。

private function _trimData($mParam)
{       
    if (is_array($mParam))
    {
        return array_map(array(&$this, '_trimData'), $mParam);
    }

    $mParam = trim($mParam);

    return $mParam;
}    
4

3 回答 3

3

这是一个递归函数。 _trimData如果传递给它的参数是一个数组,则调用自身。

array(&$this, '_trimData')是对当前对象方法的回调_trimData

整个方法实际上可以替换为:

private function _trimData($mParam)
{ 
    array_walk_recursive($mParam, 'trim');
    return $mParam;
}
于 2012-01-08T16:52:51.880 回答
1

它是回调$this->_trimData():(_trimData对象$this

于 2012-01-08T16:53:37.703 回答
0

array(&$this, '_trimData')尽管看起来像一个数组,但关于如何充当回调的进一步解释:

PHP 函数通过其名称作为字符串传递... 实例化对象的方法作为数组传递,其中包含索引 0 处的对象和索引 1 处的方法名称。PHP:回调/可调用

所以在这种情况下,对象是&$this,方法是_trimData,把它变成一个数组是 PHP 允许你将它作为回调传递给array_map.

于 2018-07-06T18:50:32.140 回答