Синтаксическая ошибка php, неожиданная T_VARIABLE

Код:

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 ответа

Решение

Ну, следующий неверный синтаксис:

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

Попробуйте это вместо этого:

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

Проблема с вашим методом isQuestion$q,

$ обозначает начало переменной и вводит в заблуждение интерпретатор.

Напишите это так:

isQuestion{$q}

С помощью фигурных скобок можно вставить переменную в строку (или что-либо с представлением строки). Читайте фигурные скобки в строке в PHP для получения дополнительной информации.

Если вам нужно вызвать функцию с динамическим именем, загляните на 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;
}

В общем, было бы лучше создать interfaceQuestion и держать array с Вопросами, которые нужно задать.

Другие вопросы по тегам