2016-12-23 4 views
0

Я имел простую ошибку в моем PHP код:Различные поведение в Laravel Homestead и Laravel Forge

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

что привело к изменению поведения в Homestead и Forge:

Homestead Результат $ строка:

0

Forge Результат:

Error: A non-numeric value encountered

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


Update

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

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

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

error_reporting = E_ALL 
display_errors = On 

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

ответ

1

Версия 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 

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

2

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

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

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

или в качестве альтернативы:

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

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

0

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

Поскольку ваш код

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

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