2014-01-10 57 views
0

這是我的函數:PHP - 將普通函數內聯匿名函數

function rp_md5 ($string) 
{ 
    return md5(strrev($string) . $string); 
} 

我想將其轉換爲一個內聯匿名函數,我已經嘗試過這樣的代碼:

$foo = $_POST['u_pwd']; 
$pwd = function() use($foo) { 
       return md5(strrev($foo) . $foo); 
    }; 

如何在變量$pwd中存儲新密碼? 通常我必須稱之爲:

echo $pwd($foo); 

對不起,我的壞解釋。

+2

什麼是不工作? –

+0

顯示用法示例。 –

+0

你對'use($ foo)'有什麼期待? – 56ka

回答

3

您可能會想到的問題是,您正嘗試直接將$pwd作爲變量打印,而不是作爲函數打印。這樣$pwd將成爲Closure類的對象,並且不能轉換爲字符串。你應該打電話給它。

在您的例子將是:

$foo='adasdsadasd'; 
$pwd=function() use($foo) {return md5(strrev($foo) . $foo);}; 
echo $pwd(); 

返回

c22ddae767082a65351481607d0974b7

use($foo)你期望$ foo的是一個全局變量,你的函數是幾乎沒有可重複使用。

使用:

$foo='adasdsadasd'; 
$pwd=function($foo) {return md5(strrev($foo) . $foo);}; 

會給你機會呼籲$pwd()與參數,這樣你就可以用不同的PARAM每次使用它。

在這種情況下,你使用的是:

echo $pwd($foo); 

爲了達到相同的輸出:

c22ddae767082a65351481607d0974b7

+0

請重新檢查我的問題 – progfa

+0

@progfa你必須調用它'$ pwd()'(如果有的話)是使用($ foo))或'$ pwd($ foo)'。你需要什麼?還有一個任務? '$富= 'adasdsadasd'; $ pwd = function($ foo){return md5(strrev($ foo)。$ foo);}; $ pwd1 = $ pwd($ foo); echo $ pwd1;' –

+0

我想在不調用$ pwd($ foo)的情況下執行該操作,並且新密碼必須存儲在同一個變量($ pwd)中,這是不可能的? – progfa