2014-03-26 100 views
1

我有一個匿名函數:PHP調用一個匿名函數

$rules = array(
    'asdf' => array('required'), 
    'zxcv' => array('function ($data) { 
    return strtoupper($data); }'), 
); 
在$規則陣列的「ZXCV」鍵找到

。我需要調用這個函數,我已經嘗試了一些事情,包括:

$rules['zxcv']('mydata'); 

array_map($rules['zxcv'], 'mydata'); 

call_user_func($規則[ 'ZXCV'], 'MYDATA' );無濟於事

任何幫助,將不勝感激

+1

爲什麼你不能夠把它叫做原因很簡單,因爲它不是其實是一個功能。你有什麼是一個字符串。不是一個功能。 – Tularis

+0

這是一個字符串,而不是一個匿名函數。 – Shomz

+0

那麼我該如何使用它呢? – user3207727

回答

4

這是一個字符串,而不是功能。失去了報價,並使它像這樣:

$rules = array(
    'asdf' => array('required'), 
    'zxcv' => function($data) { return strtoupper($data); } 
); 

用法與array_map()

array_map($rules['zxcv'], $someArray); 

單獨調用函數:

echo $rules['zxcv']('foo'); // FOO 

Demo

+0

真的那麼簡單嗎? – user3207727

+0

@ user3207727試試吧,看看;) – Clive

+0

是的,就是這麼簡單。你使它成爲一個字符串...並且字符串不被評估爲實際的PHP代碼。 – Tularis

3

你有什麼存在string,而不是function

什麼你要找的是:

$rules = array(
    'asdf' => array('required'), 
    'zxcv' => function($data) { return strtoupper($data);} 
); 

,然後你可以這樣調用:

$rules['zxcv'](YOUR_DATA); 
array_map($rules['zxcv'], YOUR_DATA); 
+0

非常感謝 – user3207727