2012-01-08 2 views
1

Я не могу разобрать первый оператор возврата, может кто-нибудь помочь объяснить, как он работает? array_map принять функцию для первого arg, но вот массив. и как работает array(&$this, '_trimData')? спасибо за объяснение.php use array as array_map первый аргумент

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

    $mParam = trim($mParam); 

    return $mParam; 
}  

ответ

3

Это рекурсивная функция. _trimData вызывает себя, если переданный ему параметр был массивом.

array(&$this, '_trimData') является метод callback к методу текущего объекта _trimData.

Весь метод действительно может быть заменен:

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

Понял ,,, ваша функция гораздо легче понять. Спасибо за объяснение. – bingjie2680

1

Это обратный вызов: $this->_trimData() (_trimData объекта $this)