#php #syntax-error #runtime-error
#php #синтаксическая ошибка #runtime-ошибка
Вопрос:
if (array_key_exists('icon_path', $changedAttributes)) {
$iconFile = $changedAttributes["icon_path"];
}
Почему $iconFile = $changedAttributes["icon_path"];
строка выдает ошибку ниже в php 7.2?
Даже если я меняю ее на одинарные кавычки ['icon_path']
, это не решает проблему.
syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)
Но в php 7.4 проблем вообще нет.
Я проверил свой код с помощью этой проверки версий https://www.piliapp.com/php-syntax-check / 7.2 выдает мне эту ошибку, но 7.4 работает нормально.
Комментарии:
1. Вы уверены, что проблема в этой строке?
2. Возможно ли, что
icon_path
это на самом деле пусто? Вполне может существовать , но если она пуста, вы будете пытаться получить доступ$changedAttributes[""]
, что, конечно, выдаст вам эту ошибку…3. Я предполагаю, что чего-то не хватает где-то еще в коде.
4. Пожалуйста, всегда показывайте реальное сообщение об ошибке ПОЛНОСТЬЮ и реальный код, этого достаточно, чтобы мы были уверены, что смотрим на правильную строку в правильном файле 🙂
5. @Stuart в этом случае они должны получить какую-то ошибку времени выполнения (и, скорее всего, с неопределенным индексом), но не ошибку синтаксического анализа.
Ответ №1:
Это была проблема с отступом. Мой код имеет приведенный ниже код JavaScript.
public function reloadPageOnEdit()
{
return <<<JSCRIPT
<script>
function openWindowReload(link) {
var href = link.href;
document.location.reload(true);
window.open(href,'_self');
}
</script>
JSCRIPT;
}
и я полностью отступил влево. Это решило проблему. Даже в 7.4 нет проблемы, кроме 7.2.
Я запутался, потому что код не удался где-то в другом месте.
public function reloadPageOnEdit()
{
return <<<JSCRIPT
<script>
function openWindowReload(link) {
var href = link.href;
document.location.reload(true);
window.open(href,'_self');
}
</script>
JSCRIPT;
}
Комментарии:
1. Теги скрипта могут иметь отступы, как вам нравится. Единственная проблема связана со строкой идентификатора
JSCRIPT;
. Смотрите Предупреждение здесь, php.net/manual/en /… Это было изменено в 7.3, так что, возможно, именно поэтому вы не видели в 7.4.2. @user3783243 спасибо, достаточно правильного отступа
JSCRIPT;
.