In diesem Artikel wird das VLD-Tool zur Analyse des PHP-Opcodes verwendet, um den Grund zu erklären. Veröffentlichen Sie zunächst das Bild
T1.php-Code
$i = 1;
$i $i ; 🎜>
line --------- 2 0 > ASSIGN >Pfad #1: 0, T2.php-Code $i = 1; $i $i $i Vld2-CodeAnzahl der Operationen: 6 kompilierte Variablen: !0 = $i Zeile # * op fetch ext return operands -------- ---------------------------------------- ---------- --------------------------
2 0 & gt;
2 post_inc ~ 2! 0
3 ADD ~ 3 ~ 1, ~ 2
4 free ~ 34 5 & gt; Return 1
Zweig: # 0; Zeile: 2- 4; sop: 0; eop: 5 Pfad #1: 0, Durch Vergleichen Anhand der beiden Bilder 2 und 4 können wir sehen, warum die Ergebnisse Sie überraschen werden Analysieren Sie zunächst die Ausführungsergebnisse von 1 und 2Zuerst wird $i a zugewiesen Bei einem Wert von 1 wird $i von selbst erhöht, und das Ergebnis 1 wird in die temporäre Variable ~1 ($i) kopiert, und dann wird $i um 2 erhöht, d. h. !0=2. Natürlich das Finale Ergebnis ist ~2 = ~1 !0 ===3 ; Lassen Sie uns 3,4 analysierenZuerst wird $i der Wert 1 zugewiesen, dann $i $i = !0 !0 == ~1 == 2, und dann erhöht sich $i von selbst und kopiert sein eigenes Ergebnis 1 in die temporäre Variable ~2 ($i). Das Endergebnis ~1 ~2 == 2 1 ===3;