2010-02-24 150 views
3

嘿所有,我不時地用array_map寫遞歸方法。例如array_map的設置範圍php

function stripSlashesRecursive($value){ 

    $value = is_array($value) ? 
     array_map('stripSlashesRecursive', $value) : 
    stripslashes($value); 
    return $value; 
} 

問:

說我想把這個功能在靜態類中,我如何使用array_map回到靜態方法的範圍,像消毒:: stripSlashesRecursive類();我確定這很簡單,但我只是不能搞清楚,看看php.net也是如此。

回答

16

當使用一個類方法像array_map()usort()爲功能回調,你必須發送回調作爲二值數組。第二個值始終是方法的名稱作爲字符串。第一個數值是

// Static outside of class context 
array_map(array('ClassName', 'methodName'), $array); 

// Static inside class context 
array_map(array(__CLASS__, 'methodName'), $array); 

// Non-static outside of object context 
array_map(array($object, 'methodName'), $array); 

// Non-static inside of object context 
array_map(array($this, 'methodName'), $array); 
+0

yessir ...謝謝你 array_map(陣列(__CLASS__, 'stripSlashesRecursive'),$值)範圍內(類名或對象): 正是我一直在尋找。 – 2010-02-24 21:14:11

1

array_map需要回調作爲其第一個參數。

而且回調靜態方法是這樣寫的:

array('classname', 'methodname') 


這意味着,在特定情況下,你會使用:

array_map(array('stripSlashesRecursive', ''), $value); 


更多有關回調信息的信息,請參閱PHP手冊的此部分:Pseudo-types and variables used in this documentation - callback

0
array_map(array('Sanitize', 'stripSlashesRecursive'), $value) ...