0

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

代码是

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

它有效,有什么想法吗?

谢谢

4

2 回答 2

4

将最后一行更改为:

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

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

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

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

于 2013-03-13T21:16:19.730 回答
0

你会在这里找到一些有用的东西: 如何从存储在变量中的字符串调用 PHP 函数

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

于 2013-03-13T21:20:06.763 回答