Синтаксическая ошибка 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;
}
В общем, было бы лучше создать interface
Question
и держать array
с Вопросами, которые нужно задать.