如何根据变量的值更改函数调用的顺序

时间:2014-09-06 07:58:28

标签: php wordpress-plugin

我正在开发一个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()应该是要执行的最后一个函数调用。

请建议解决方案的最佳方法,谢谢!

2 个答案:

答案 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.phpphp.net/manual/en/function.ksort.php