我需要为正在处理的项目使用变量函数名称,但是遇到了一些奇怪的问题。函数名称最终以数组中的字符串元素的形式出现。
这有效:
$func = $request[2];
$pages->$func();
这不是:
$pages->$request[2]();
我不知道为什么。它将数组抛出字符串转换错误,好像忽略了我为特定元素提供了键一样。这只是它的工作方式还是我做错了什么?
最佳答案
至于 php 5 ,则可以使用大括号语法:
$pages->{$request[2]}();
足够简单的示例可以重现:
<?php
$request = [
2 => 'test'
];
class Pages
{
function test()
{
return 1;
}
}
$pages = new Pages();
echo $pages->{$request[2]}();
或者(如您在问题中所指出的):
$methodName = $request[2];
$pages->$methodName();
从php.net引用 php 7 情况:
还有一个表格,用于 php 5 和 php 7 的区别,就在我在此处提供的文档中的引用下方。
您应该考虑哪些事项:
$request[2]
的值(它真的是字符串吗?)。 关于PHP变量函数数组值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40034319/