php语法错误,意外T_VARIABLE

时间:2012-08-30 09:48:36

标签: php syntax-error

代码:

public function isQuestion($query){

    $questions = $this->getAllQuestions();

    if (count($questions)){
            foreach ($questions as $q){
                if ($this->isQuestion$q($query)){
                    return $this->isQuestion$q($query);
                }
            }
        }

    return false;
}

错误:

Parse error: syntax error, unexpected T_VARIABLE in /Applications/XAMPP/xamppfiles/htdocs/ai/application/models/question_model.php on line 7

问题发生在

if ($this->isQuestion$q($query)){

return $this->isQuestion$q($query);

我有一些功能,例如 isQuestion1 isQuestion2 isQuestion3 等...我打电话给另一个功能 * getAllQuestions *会返回数组中所有问题的数字,如 1,2,3,4,5 ... 然后我使用上面的代码来检查每个函数是否是基于查询的问题

3 个答案:

答案 0 :(得分:2)

问题在于您的方法isQuestion$q

$表示变量的开头,令解释器感到困惑。

像这样写:

isQuestion{$q}

花括号允许您将变量插入到字符串中(或任何具有字符串表示形式的变量)。请阅读Curly braces in string in PHP以获取更多信息。

答案 1 :(得分:1)

嗯,以下是无效的语法:

if ($this->isQuestion$q($query)){

请改为尝试:

foreach ($questions as $q) {
    if ($result = $this->{'isQuestion' . $q}()) {
        return $result;
    }
}
return false;

答案 2 :(得分:0)

如果您需要使用动态名称调用函数,请查看http://de2.php.net/manual/en/function.call-user-func-array.phphttp://de2.php.net/manual/en/function.call-user-func.php

您可能希望确保该方法确实存在,以避免致命错误:http://de2.php.net/manual/en/function.method-exists.php

同时检查是否要替换

if ($this->isQuestion$q($query)){
    return $this->isQuestion$q($query);
}

if ($this->isQuestion$q($query)){
    return true;
}

一般情况下,最好创建interface Question并保留array并询问问题实例。