2011-01-22 52 views
4
class something{ 
    public function add_val($val){ 
    $array = array(); 
    foreach($val as $value) { 
     $array[] = static::$post[${$value}]; 
    } 
    return $array; 
    } 
    pulblic function somethingelse(){ 
     .... 
     .... 
     $optionsArray['value'] = array_map('add_val', array_chunk($drop_val, count($optionsArray['heading_x']))); 
     .... 
     .... 
    } 
} 

如何在另一個使用array_map()中調用add_val方法?php - 在類中使用公共函數回調的數組映射

回答

8

使用包含對象的數組,方法名:

$optionsArray['value'] = array_map(array($this, 'add_val'), array_chunk($drop_val, count($optionsArray['heading_x']))); 

您爲參加回調作爲參數的大多數其他功能,做同樣類似array_walk()call_user_func()call_user_func_array(),等等。

它是如何工作的?好吧,如果你傳遞一個數組給回調參數,PHP做一些事情類似這個(爲array_map()):

if (is_array($callback)) {   // array($this, 'add_val') 
    if (is_object($callback[0])) { 
     $object = $callback[0]; // The object ($this) 
     $method = $callback[1]; // The object method name ('add_val') 

     foreach ($array as &$v) { 
      // This is how you call a variable object method in PHP 
      // You end up doing something like $this->add_val($v); 
      $v = $object->$method($v); 
     } 
    } 
} 

// ... 

return $array; 

在這裏你可以看到,PHP只是循環通過您的數組,調用方法上的每個值。沒有什麼複雜的;再次只是基本的面向對象代碼。

這可能也可能不是PHP如何在內部完成的,但概念上它是相同的。

+0

破解,好人,謝謝你的信息 – 2011-01-22 12:10:20

相關問題