我正在尝试使用php变量调用函数。您将在function mainFunction()
的代码中看到。如果不可能这样做,有没有更好的方法来避免更多的代码呢?我希望它会这样工作。
<?php
$a = 1;
$b = 1;
if ( $a == $b ) {
$exampleFunction = 'exampleOne';
} else {
$exampleFunction = 'exampleTwo';
}
//----------------------------------------------
mainFunction();
function mainFunction() {
global $exampleFunction;
echo 'This is mainFunction <br>';
$$exampleFunction();//Here's where I'm stuck.
}
function exampleOne() {
echo 'This is example one <br>';
}
function exampleTwo() {
echo 'This is example two <br>';
}
?>
答案 0 :(得分:3)
解决这个问题的方法是使用PHP的call_user_func函数。这是修改后的代码(它也删除了全局变量):
<?php
$a = 1;
$b = 1;
// I'm just using this to hold the function name,
// to get rid of the global keyword. It will be passed
// as an argument to our mainFunction()
$exampleFunction = '';
if ($a == $b) {
$exampleFunction = 'exampleOne';
} else {
$exampleFunction = 'exampleTwo';
}
//----------------------------------------------
mainFunction($exampleFunction);
function mainFunction($func) {
echo 'This is mainFunction <br>';
// Use PHP's call_user_func. We are also checking to make sure
// the function exists here.
if (function_exists($func)) {
// This will call the function.
call_user_func($func);
}
}
function exampleOne() {
echo 'This is example one <br>';
}
function exampleTwo() {
echo 'This is example two <br>';
}
当我运行此代码时,它会产生以下输出:
This is mainFunction
This is example two
答案 1 :(得分:1)
仅使用$exampleFunction
,不使用$$
:
<?php
function mainFunction() {
global $exampleFunction;
echo 'This is mainFunction <br>';
$exampleFunction();
}
?>
请参阅变量函数的manual,而不是变量。
PS: 另外,我建议$exampleFunction
为mailFunction
global
,而不是{{1}} }第
答案 2 :(得分:1)
尝试
if ( $a == $b ) {
$exampleFunction = exampleOne();
} else {
$exampleFunction = exampleTwo();
}
并且您的函数应该像
一样返回function exampleOne() {
return 'This is example one <br>';
}
function exampleTwo() {
return 'This is example two <br>';
}
OR 如果您想通过变量调用它们尝试替换
function mainFunction() {
global $exampleFunction;
echo 'This is mainFunction <br>';
$exampleFunction();
}
答案 3 :(得分:1)
答案 4 :(得分:1)
function mainFunction() {
global $exampleFunction;
echo 'This is mainFunction <br>';
$exampleFunction();
}