如何通过数组创建switch()而不使用if-else?

时间:2015-04-18 14:44:59

标签: php

我有两个功能,希望在$test=onefunction1()运行时以及$test=two时运行function2()。像这样:

switch ($test)
 {

case "one":
function1();
break;

case "two":
function2();
break;

 }

现在如何通过数组(选择)?任何人都知道吗?

如何在函数上设置数组键?像这样的东西:

array("one"=>function1(),"two"=>function2());

2 个答案:

答案 0 :(得分:4)

<?php
function func1()
{
    print "111\n";
}

function func2()
{
    print "222\n";
}

//put functions names into an array
$functions = array(
    'one' => "func1",
    'two' => "func2",
);

$test = 'two';

if(isset($functions[$test]))
{
    call_user_func($functions[$test]);
}

输出:

222

http://php.net/manual/en/function.call-user-func.php

答案 1 :(得分:0)

user4035的答案是正确的,但换句话说我们可以使用:

$arr[$test]();

而不是

call_user_func($arr[$test]);

然后:(完整代码):

  function func1(){
    echo 'func1 runing';
        }

  function func2(){
    echo 'func2 runing';
        }

     $test='one';

     $arr=array ('one'=>'func1','two'=>'func2');
     $arr[$test]();

输出:

func1 runing