php函数作为函数参数

时间:2011-11-14 17:41:59

标签: php xml parsing function

考虑以下函数声明来检查双语网站上的当前语言:

function checkNewsLanguage(){
    $requiredURL = $_SERVER['REQUEST_URI'];
    $myLanguage = explode('?lang=',$requiredURL);
    if($myLanguage=='en')
        return false;
    else return true;
}

然后我使用以下函数获得所需语言的XML对象:

function item1('checkNewsLanguage')
    if(checkNewsLanguage()){
        $urlD = "someurl1";
        $xmlD = simplexml_load_file(cacheFetch($urlD,'cachedfeed1.xml',3600));
        $itemD = '';
        if($xmlD === FALSE)
            {$itemD = '';}
        else
            {$itemD = $xmlD->channel->item;}
    }
    else {
        $urlD = "someurl2";
        $xmlD = simplexml_load_file(cacheFetch($urlD,'cachedfeed2.xml',3600));
        $itemD = '';
        if($xmlD === FALSE)
            {$itemD = '';}
        else
            {$itemD = $xmlD->channel->item;}
    }
    return $itemD;
    }
function item2('checkNewsLanguage')
//Analogic procedure

我得到"Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting '&' or T_VARIABLE "。如您所见,item1()和item2()中的函数调用不正确。非常感谢任何代码帮助。

2 个答案:

答案 0 :(得分:2)

你的函数参数需要是一个变量,而不仅仅是一个字符串(如错误所示)。您的函数应定义如下:

function item1($variableHere)而非function item2('string here')

当我再次查看您的代码时,您尝试执行的操作似乎是根据item1()item2()的参数调用某个函数(因此,如果您通过item1(foo)你想调用foo()函数。

尝试:

function item1($function)
{
    if ($function()) 
    { 
        ...
    }
}

item2()类似。这样你就可以调用item1('checkNewsLanguage'),这就是它将在体内调用的函数。

答案 1 :(得分:1)

问题在线:

function item1('checkNewsLanguage')

你不能在那里有'checkNewsLanguage'。您需要有一个接受函数参数的变量。