Nachdem ich die Rangfolge der PHP-Operatoren gelesen habe, kann ich die Beispiele im Handbuch verstehen, aber dieses ist etwas schwer zu verstehen
<code> echo "1+5". 1+5;// 6 echo "1+5". 5+1;// 2 echo "5+1". 5+1;// 6 echo "5+1". 1+5;// 10</code>
Nachdem ich die Rangfolge der PHP-Operatoren gelesen habe, kann ich die Beispiele im Handbuch verstehen, aber dieses ist etwas schwer zu verstehen
<code> echo "1+5". 1+5;// 6 echo "1+5". 5+1;// 2 echo "5+1". 5+1;// 6 echo "5+1". 1+5;// 10</code>
Beachten Sie die Anweisungen auf php.net.
Meine Übersetzung (schlecht)
Der Punktoperatorhat die gleiche Priorität wie
,
-
, und eine gemischte Verwendung kann zu unerwarteten Effekten führen.
wie
<code class="php">$var = 3; echo "Result: " . $var + 3; </code>
Das obige Ergebnis gibt 3 anstelle des erwarteten Ergebnisses aus6
Da der Punktoperator die gleiche Priorität hat wie
, -
, berechnen alle oben genannten Operationen "Result: " . $var 3;
zunächst das Ergebnis der Zeichenfolge Result
und der Variablen $var
, um
Resuklt3
berechnet dann das Ergebnis von Resuklt3
und der Zahl 3
. Nicht leere, nicht numerische Zeichenfolgen und ganze Zahlen werden während der Berechnung in 0 umgewandelt, sodass das Ergebnis 3 ist
Dasselbe wie echo "5 1". 1 5;
Dies ist das Gleiche. Berechnen Sie zuerst "5 1". 1
, um eine Zeichenfolge 5 11
zu erhalten (beachten Sie, dass dies eine Zeichenfolge ist), fügen Sie dann die Zahl 5
hinzu und konvertieren Sie die Zeichenfolge 5 11
zu Zahl = 5, plus 5
das Ergebnis ist 10
Die Antwort ist sehr einfach. Vier Beispiele veranschaulichen ein Problem. Die Priorität des String-Verkettungsoperators .
ist höher als die des Operators
.
Wenn die für die Addition verwendete Variable in PHP zunächst keinen numerischen Typ hat, wird sie zunächst in einen numerischen Typ konvertiert und die Zeichenfolge „1 15“ wird in die Zahl 1 konvertiert.
Die Ergebnisse dieser Artikel sind offensichtlich:
<code>"1+5" . 1 + 5 = "1+15" + 5 = 1 + 5 = 6 "1+5" . 5 + 1 = "1+51" + 1 = 1 + 1 = 2 "5+1" . 5 + 1 = "5+15" + 1 = 5 + 1 = 6 "5+1" . 1 + 5 = "5+11" + 5 = 5 + 5 = 10</code>
Ergänzung:
Der String-Verketter und der arithmetische Operator haben die gleiche Priorität und liegen auf der gleichen Ebene. Die Bindungsrichtung ist links, also von links nach rechts gerechnet. siehe Link
Daher wird zuerst die Zeichenfolgenverkettung und dann die Additionsoperation durchgeführt.