-1

代码:

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/xamppfiles/htdocs/ai/application/models/question_model.php 中的意外 T_VARIABLE

问题发生在:

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

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

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

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

4

3 回答 3

2

问题出在你的方法isQuestion$q上。

$表示变量的开始并且混淆了解释器。

像这样写:

isQuestion{$q}

花括号允许您将变量插入字符串(或具有字符串表示的任何内容)。阅读PHP 中字符串中的花括号以获取更多信息。

于 2012-08-30T09:51:42.523 回答
1

好吧,以下是无效的语法:

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

试试这个:

foreach ($questions as $q) {
    if ($result = $this->{'isQuestion' . $q}()) {
        return $result;
    }
}
return false;
于 2012-08-30T09:52:53.187 回答
0

如果您需要使用动态名称调用函数,请查看http://de2.php.net/manual/en/function.call-user-func-array.phphttp://de2.php。网络/手册/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要询问的 Question 实例。

于 2012-08-30T10:04:23.273 回答