Почему эта функция php array выдает мне ошибку

#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; .