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

エラー:

解析エラー: /Applications/XAMPP/xamppfiles/htdocs/ai/application/models/question_model.php 行 7 の構文エラー、予期しない 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.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;
}

一般的には、 を作成し、尋ねられる Question インスタンスで をinterface Question保持する方がよい場合があります。array

于 2012-08-30T10:04:23.273 に答える