Laravel Homestead & Laravel Forge 中的不同行为

Different behavior in Laravel Homestead & Laravel Forge

我的 PHP 代码中有一个简单的错误:

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

这导致了 Homestead 和 Forge 中的不同行为:

Homestead $string 的结果:

0

锻造结果:

Error: A non-numeric value encountered

有人知道为什么吗?以及如何将 Homestead 行为更改为与伪造行为相同的行为?绝对更好..


更新

对不起,我的问题不是很清楚。问题不是关于错误本身 += 而不是 .=,我知道这一点。

问题是为什么在一种环境中会出现错误,而在另一种环境中却不会。

两种环境的配置方式相同 (php.ini):

error_reporting = E_ALL
display_errors = On

这不仅仅是一个通知,而是一个错误。

您的问题是由 += 运算符引起的。这用于将数字加在一起,而您试图连接字符串。

你应该使用 .=

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

或者:

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

您在 forge 中看到该消息的原因是它似乎打开了 PHP 警告。

+= 将数字(右值)添加到变量的值(左值)并将其存储在变量中。

因为你的代码

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

$string 作为左值并包含非数字字符,因此出现错误。您的意思可能是 .= 将字符串(右值)连接到变量的值(左值)并将其存储在变量中。

Laravel Homestead 的 PHP 版本是 7.0.8,Laravel Forge 的 PHP 版本是 7.1.0-3。

我将 Laravel Homestead 更新到最新的 PHP 7.1.0-2,现在 Homestead 显示正确的错误:

Error: A non-numeric value encountered

我不确定它是 PHP 版本还是新版本对 Homestead 的其他更改。这就是我发现的。