php使用array作为array_map的第一个参数

时间:2012-01-08 16:50:56

标签: php arrays array-map

我无法弄清楚第一个返回声明,任何人都可以帮忙解释它是如何工作的吗? array_map接受第一个arg的函数,但这里是一个数组。以及array(&$this, '_trimData')如何运作?谢谢你解释。

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

    $mParam = trim($mParam);

    return $mParam;
}    

3 个答案:

答案 0 :(得分:3)

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

array(&$this, '_trimData')是当前对象方法_trimData的{​​{3}}。

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

private function _trimData($mParam)
{ 
    array_walk_recursive($mParam, 'trim');
    return $mParam;
}

答案 1 :(得分:1)

回调:$this->_trimData()(对象_trimData的{​​{1}})

答案 2 :(得分:0)

关于<lv:RadListView xmlns:lv="nativescript-ui-listview" loaded="listLoaded"> <lv:RadListView.itemTemplate> <StackLayout loaded="itemLoaded"> ... </StackLayout> </lv:RadListView.itemTemplate> </lv:RadListView> 如何充当回调的解释,尽管看起来像数组:

  

PHP函数的名称以字符串的形式传递...实例化对象的方法以数组的形式传递,该数组包含索引为0的对象和索引为1的方法名。PHP: Callbacks/Callables

因此,在这种情况下,对象是function listLoaded(args) { var list = args.object; list.androidListView.setClipToPadding(false); list.androidListView.setClipChildren(false); } function itemLoaded(args) { var item = args.object; item.nativeView.setOutlineProvider(android.view.ViewOutlineProvider.BOUNDS); item.nativeView.setClipToOutline(false); } exports.listLoaded = listLoaded; exports.itemloaded = itemLoaded; ,方法是array(&$this, '_trimData'),将其放入数组是PHP允许您将其作为回调传递到&$this的一种方式