2014-01-10 35 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