PHP语法错误;意外的T_VARIABLE”-isQuestion($query)


PHP syntax error, "unexpected T_VARIABLE" - isQuestion($query)

代码:

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;
}

错误:

分析错误:语法错误,第7行上/Applications/XAMPP/examplefiles/htdocs/ai/application/models/question_model.php中出现意外的T_VARIABLE

问题发生在:

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

我有一些函数,如isQuestion1isQuestion2isQuestion3等。我调用另一个函数getAllQuestion,它将返回数组中的所有问题编号,如1,2,3,4,5…

然后,我使用上面的代码来检查每个函数是否都是基于查询的问题。

问题出在方法isQuestion$q上。

$表示一个变量的开始,并且使解释器感到困惑。

这样写:

isQuestion{$q}

大括号允许您将变量插入字符串(或任何具有字符串表示形式的内容)。有关详细信息,请阅读PHP中字符串中的花括号。

以下是无效语法:

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

试试这个:

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

如果需要调用具有动态名称的函数,请查看http://de2.php.net/manual/en/function.call-user-func-array.php或http://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,并保存一个带有要询问的Question实例的array