数组中的php函数坏了

时间:2013-03-13 21:14:17

标签: php arrays function

我正在尝试设置一个数组来拉动文件名和函数名来运行,但它没有完全正常工作。

代码是

$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();

它有效,有什么想法吗?

由于

2 个答案:

答案 0 :(得分:4)

将最后一行更改为:

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

这使用call_user_func函数获得更易读的代码和更好的可移植性。以下也应该有效(仅在PHP 5.4上测试)

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

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

答案 1 :(得分:0)

你会在这里找到有用的东西: How to call PHP function from string stored in a Variable

调用存储在字符串中的函数名称就是你想要的......