2013-03-13 35 views
0

我想设置一个数组,它将拉动文件名和函数名称来运行,但它不能完全正常工作。PHP函数在数组中破碎

的代码是

$actionArray = array(
    'register' => array('Register.php', 'Register'), 
); 

if (!isset($_REQUEST['action']) || !isset($actionArray[$_REQUEST['action']])) { 
    echo '<br><br>index<br><br>'; 
    echo '<a href="?action=register">test</a>'; 
    exit; 
} 

require_once($actionArray[$_REQUEST['action']][0]); 
return $actionArray[$_REQUEST['action']][1]; 

Register.php有

function Register() 
{ 
    echo 'register'; 

} 


echo '<br>sdfdfsd<br>'; 

不过,这并不呼应注册,只是sdfdfsd。

如果我改变了第一批的代码

return $actionArray[$_REQUEST['action']][1]; 

return Register(); 

它的工作原理,任何想法?

感谢

+0

不使用'$ _REQUEST',使用'$ _GET'或'$ _POST'来代替。 – 2013-03-13 21:16:37

+0

代码来自SMF论坛软件,我只是在玩它,我改变的唯一一点是回声 – Garry 2013-03-13 21:22:32

回答

4

更改最后一行:

return call_user_func($actionArray[$_REQUEST['action']][1]); 

这将使用更多可读的代码和更好的便携性的call_user_func功能。下面的方式也应该工作(仅在PHP测试5.4+)

return $actionArray[$_REQUEST['action']][1](); 

这几乎与您的代码,但实际上,我调用该函数,而不是返回数组的值。如果没有函数调用语法(),您只需要PHP获取变量的值(在本例中为数组)并返回它。