0

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

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

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

$string 的宅基地结果:

0

锻造结果:

错误:遇到非数字值

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


更新

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

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

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

error_reporting = E_ALL
display_errors = On

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

4

3 回答 3

2

你的问题是因为+=运营商。这用于将数字相加,而您正在尝试连接字符串。

你应该使用.=

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

或者:

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

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

于 2016-12-23T15:08:34.317 回答
1

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 的新版本的其他更改。这正是我发现的。

于 2017-01-03T07:53:52.050 回答
0

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

由于您的代码

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

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

于 2016-12-23T15:23:30.530 回答