php call_user_func_array不起作用

时间:2011-10-10 15:23:46

标签: php

第一次尝试处理这个call_user_func_array,但有些东西不起作用,因为我没有得到该函数的响应,我还能错过什么?

function _a_($id, $text) {          
    if($id == 'a') {
    _b_();
    if(substr($text, 0, 8) == "{source}") {
        $campos = substr_replace($text, '', 0, 8);
        $campos = substr($campos, 0, -9);
        $funcao = explode(";", $campos);
        print_r($funcao);
        call_user_func_array($funcao[0], $funcao[1]);
    }
    } else {
        echo $text."<br>";
    }
}
function _b_() {
    echo "b was fired<br>";
}
function _c_($some_text) {
    echo "received a call<br>";
    echo "inside function c: ".$some_text."<br>";
}
_a_("a", "{source}_c_;ola{/source}");

3 个答案:

答案 0 :(得分:4)

说出这个:

call_user_func($funcao[0], $funcao[1]);

或者这个:

call_user_func_array($funcao[0], array($funcao[1]));

后一种形式仅在您需要通过引用传递参数时才有用;有关详细信息,请参阅the documentation

答案 1 :(得分:4)

call_user_func_array($funcao[0], $funcao[1]); 

=&GT;

call_user_func_array($funcao[0], array($funcao[1]));

答案 2 :(得分:3)

call_user_func_array()期望第二个参数是一个数组。如果您知道参数的数量,请使用 call_user_func