簡體   English   中英

php - 在類中使用公共函數回調的數組映射

[英]php - array map using public function callback within class

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 方法?

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

$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 在內部的工作方式,但概念上是一樣的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM