我的PHP代码中有一个简单的错误:
$string += 'something' . $Car->id . ',';
这导致了Homestead和Forge的不同行为:
$ string的宅基地结果:
0
锻造结果:
错误:遇到非数字值
有人知道为什么吗?我怎样才能将宅基地的行为改变为像伪造者一样?它绝对更好......
更新
对不起,我的问题并不完全清楚。问题不在于错误本身+ =而不是。=,我知道这一点。
问题是为什么在一个环境中出现错误而在另一个环境中出现错误。
两种环境的配置方式相同(php.ini):
error_reporting = E_ALL
display_errors = On
这不只是一个通知,而是一个错误。
答案 0 :(得分:2)
您的问题是由于+=
运算符。这用于将数字加在一起,而您正在尝试连接字符串。
您应该使用.=
$string .= 'something' . $Car->id . ',';
或者:
$string = $string . 'something' . $Car->id . ',';
您在伪造中看到该消息的原因是因为它似乎已启用PHP警告。
答案 1 :(得分:1)
Laravel Homestead的PHP版本是7.0.8,而Laravel Forge 7.1.0-3的PHP版本。
我将Laravel Homestead更新为使用PHP 7.1.0-2的最新版本,现在Homestead显示了正确的错误:
Error: A non-numeric value encountered
如果它仅仅是PHP版本,或者如果它是Homestead中的新版本的另一个变化,我不会感到害羞。这就是我发现的。
答案 2 :(得分:0)
+=
将一个数字(右值)添加到变量的值(左值)并将其存储在变量中。
自你的代码
$string += 'something' . $Car->id . ',';
左侧有$string
并包含非数字字符,因此出错。您可能意味着.=
将字符串(右值)与变量值(左值)连接起来并将其存储在变量中。