Различное поведение в 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
как левое значение и содержит нечисловые символы, отсюда и ошибка. Ты наверное имел ввиду .=
которая объединяет строку (правое значение) со значением переменной (левое значение) и сохраняет ее в переменной.