2016-12-23 13 views
0

Ich hatte einen einfachen Fehler in meinem PHP-Code:Unterschiedliches Verhalten in Laravel Homestead & Laravel Forge

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

, die in unterschiedlichen Verhalten in Homestead und Forge Folge:

Homestead Ergebnis von $ string:

0

Forge Ergebnis:

Error: A non-numeric value encountered

Weiß jemand warum? Und wie kann ich das Homestead-Verhalten auf dasselbe wie das Schmieden ändern? Es ist absolut besser ..


aktualisieren

Es tut mir leid ich in meiner Frage nicht ganz klar war. Die Frage war nicht der Fehler selbst. Ich war mir dessen bewusst.

Die Frage ist, warum in einer Umgebung der Fehler auftritt und in der anderen nicht.

Beide Umgebungen die gleiche Art und Weise (php.ini) konfiguriert sind:

error_reporting = E_ALL 
display_errors = On 

Und es war nicht nur ein Hinweis, es ist ein Fehler.

Antwort

1

Die PHP Version von Laravel Homestead war 7.0.8 und die PHP Version von Laravel Forge 7.1.0-3.

I Laravel Homestead auf den neuesten aktualisiert, die PHP verwendet 7.1.0-2, und jetzt Homestead zeigt die richtigen Fehler auf:

Error: A non-numeric value encountered 

Ich bin nicht sicher, ob es nur die PHP-Version ist, oder wenn es eine andere Änderung in Homestead mit der neuen Version. Das ist genau das, was ich herausgefunden habe.

2

Ihr Problem ist wegen des Operators +=. Dies wird verwendet, um Zahlen zu addieren, während Sie versuchen, Strings zu verketten. diese Botschaft in Schmiede

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

Der Grund Sie sehen, ist, weil es PHP Warnungen eingeschaltet zu haben scheint:

sollten Sie .=

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

oder alternativ verwendet werden.

0

+= fügt dem Wert einer Variablen (linker Wert) eine Zahl (richtiger Wert) hinzu und speichert sie in der Variablen.

Da Ihr Code von

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

hat $string als den linken Wert und enthält nicht-numerische Zeichen, daher die Fehler. Sie haben wahrscheinlich .= gemeint, die eine Zeichenfolge (richtiger Wert) mit dem Wert einer Variablen (linker Wert) verkettet und in der Variablen speichert.