我正在开发一个WordPress插件,我有以下情况:
$functions1 = 7; //users can select this value and this can be something between 1-7
$functions2 = 5; //these values are positions to be precise
$functions3 = 6; //no two variables can have same value as each position is unique
$functions4 = 3; //we can also make $functions1-7 an array to avoid making 7 variables
$functions5 = 4;
$functions6 = 2;
$functions7 = 1;
我需要根据上面提到的相对变量的值更改这些函数调用的执行顺序:
function1();
function2();
function3();
function4();
function5();
function6();
function7();
所有这些函数都会返回一些HTML:
function1(){ return "<div>Hello World from function1</div>" }
.
.
function7(){return "<div>Hello World from function7</div>"}
在当前的顺序形式中,无论上面的$ functions1-7变量的值如何,函数都将按照它们被调用的顺序执行。
根据 $ functions1-7 变量的值更改函数调用顺序的最佳方法是什么,例如 $ functions4 = 7 然后是function4()应该是要执行的最后一个函数调用。
请建议解决方案的最佳方法,谢谢!
答案 0 :(得分:1)
使其成为1个函数,根据变量的值返回不同的结果:
function testFunction($var) {
if ($var == 1)
return "<div>Hello World from function1</div>";
if ($var == 7)
return "<div>Hello World from function7</div>";
...
}
然后你可以像这样运行它:
testFunction($functions1);
编辑:首先我完全不明白你的问题,所以让我来回答一下。
为了按要求的顺序运行函数,最好使用数组:
$array = array($functions1, $functions2, $functions3, $functions4, $functions5, $functions6, $functions7);
然后按照上面的说法进行操作,但将其置于循环中:
for ($i = 0; $i<count($array); $i++)
echo testFunction($array[$i]);
以下是演示:http://3v4l.org/mgOKh
答案 1 :(得分:0)
可以使用关联数组和foreach来完成,例如
function Func3(){
echo '3';
}
function Func1(){
echo '1';
}
$a = [3=>'Func3',1=>'Func1'];
ksort($a);
foreach($a as $k=>$v){
$fname = $a[$k];
$fname();
}
未经测试。 资源: php.net/manual/en/functions.variable-functions.php,php.net/manual/en/function.ksort.php