Различное поведение в Laravel Homestead & Laravel Forge

У меня была простая ошибка в моем коде PHP:

$string += 'something' . $Car->id . ',';

Что привело к различному поведению в Хомстеде и Кузнице:

Усадьба Результат $ string:

0

Подделать Результат:

Ошибка: обнаружено нечисловое значение

Кто-нибудь знает почему? И как я могу изменить поведение Хомстеда на такое же, как у кузницы? Это абсолютно лучше..


Обновить

Мне жаль, что я не совсем понял в своем вопросе. Вопрос был не о самой ошибке += вместо.=, Я ​​знал об этом.

Вопрос в том, почему в одной среде появляется ошибка, а в другой нет.

Обе среды настроены одинаково (php.ini):

error_reporting = E_ALL
display_errors = On

И это было не просто уведомление, это ошибка.

3 ответа

Решение

Версия PHP Laravel Homestead была 7.0.8, а версия PHP Laravel Forge 7.1.0-3.

Я обновил Laravel Homestead до новейшей версии, которая использует PHP 7.1.0-2, и теперь Homestead показывает правильную ошибку:

Error: A non-numeric value encountered

Я не уверен, является ли это просто версией PHP или другим изменением в Homestead с новой версией. Вот только что я узнал.

Ваша проблема из-за += оператор. Это используется для сложения чисел, когда вы пытаетесь объединить строки.

Вы должны использовать .=

$string .= 'something' . $Car->id . ',';

или альтернативно:

$string = $string . 'something' . $Car->id . ',';

Причина, по которой вы видите это сообщение в forge, заключается в том, что в нем, похоже, включены предупреждения PHP.

+= добавляет число (правое значение) к значению переменной (левое значение) и сохраняет его в переменной.

Так как ваш код

$string += 'something' . $Car->id . ',';

имеет $string как левое значение и содержит нечисловые символы, отсюда и ошибка. Ты наверное имел ввиду .= которая объединяет строку (правое значение) со значением переменной (левое значение) и сохраняет ее в переменной.

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