Über PHPs debug_zval_dump und xdebug_debug_zval

WBOY
Freigeben: 2016-10-23 00:12:55
Original
994 Leute haben es durchsucht

Liebe Meister, ich möchte fragen, warum der von debug_zval_dump und xdebug_debug_zval erhaltene refcount unterschiedlich ist?
Zum Beispiel:

<code>   $var = "laruence"; 
   $var_1 = &$var;
   $var_2 = &$var;
   
   $var1 = $var;
   $var2 = $var;
   $var3 = $var;
   $var4 = $var;
   
   //debug_zval_dump得到的refcount等于1
   
   //xdebug_debug_zval得到的refcount等于3
</code>
Nach dem Login kopieren
Nach dem Login kopieren

Obwohl ich online gelesen habe, dass refcount angibt, wie viele Variablennamen auf diesen Zval-Container verweisen, weiß ich immer noch nicht, warum die Ergebnisse inkonsistent sind. Eine ausführliche Einführung zu dieser Funktion habe ich nicht gefunden. . .

Aber ich habe folgende Regeln festgestellt:


Über xdebug_debug_zval:

  • Wenn eine Variablenreferenz vorhanden ist, lautet das mit xdebug_debug_zval erhaltene Ergebnis: is_ref=1;refcount=die Anzahl der Variablenreferenzen (zählt die Variable selbst)

Zum Beispiel

<code>   $var = "laruence";    //第1次
   $var_1 = &$var;       //第2次

   $var1 = $var;
   $var2 = $var;
   $var3 = $var;
   $var4 = $var;
</code>
Nach dem Login kopieren
Nach dem Login kopieren

Also können wir von xdebug_debug_zval is_red=1;refcount=2;

erhalten
  • Wenn auf die Variable nicht verwiesen wird, lautet das mit xdebug_debug_zval erhaltene Ergebnis: is_ref=0;refcount=die Anzahl der kopierten Variablen (zählt die Variable selbst)

Zum Beispiel

<code>   $var = "laruence";     //第1次

   $var1 = $var;          //第2次
   $var2 = $var;          //第3次
   $var3 = $var;          //第4次
   $var4 = $var;          //第5次
</code>
Nach dem Login kopieren
Nach dem Login kopieren

Also können wir aus xdebug_debug_zval is_red=0;refcount=5;

erhalten

Über debug_zval_dump:

  • Wenn eine Variablenreferenz vorhanden ist, lautet das Ergebnis der Verwendung von debug_zval_dump: refcount=1 (immer = 1)

Zum Beispiel

<code>   $var = "laruence";    
   $var_1 = &$var;       

   $var1 = $var;
   $var2 = $var;
   $var3 = $var;
   $var4 = $var;
</code>
Nach dem Login kopieren
Nach dem Login kopieren

Aus debug_zval_dump können wir also Folgendes erhalten: refcount=1;

  • Wenn auf die Variable nicht verwiesen wird, lautet das mit debug_zval_dump erhaltene Ergebnis: refcount = die Anzahl der Kopien der Variablen (die Variable selbst wird gezählt) 1

Zum Beispiel

<code>   $var = "laruence";    //第1次

   $var1 = $var;          //第2次
   $var2 = $var;          //第3次
   $var3 = $var;          //第4次
   $var4 = $var;          //第5次
</code>
Nach dem Login kopieren
Nach dem Login kopieren
Also können wir aus xdebug_debug_zval is_red=0;refcount=6;

erhalten

Antwortinhalt:

Liebe Meister, ich möchte fragen, warum der von

debug_zval_dump und xdebug_debug_zval erhaltene refcount unterschiedlich ist? Zum Beispiel:

<code>   $var = "laruence"; 
   $var_1 = &$var;
   $var_2 = &$var;
   
   $var1 = $var;
   $var2 = $var;
   $var3 = $var;
   $var4 = $var;
   
   //debug_zval_dump得到的refcount等于1
   
   //xdebug_debug_zval得到的refcount等于3
</code>
Nach dem Login kopieren
Nach dem Login kopieren
Obwohl ich online gelesen habe, dass refcount angibt, wie viele Variablennamen auf diesen Zval-Container verweisen, weiß ich immer noch nicht, warum die Ergebnisse inkonsistent sind. Eine ausführliche Einführung zu dieser Funktion habe ich nicht gefunden. . .

Aber ich bin zu folgenden Regeln gekommen:


Über xdebug_debug_zval:

  • Wenn eine Variablenreferenz vorhanden ist, lautet das mit xdebug_debug_zval erhaltene Ergebnis: is_ref=1;refcount=die Anzahl der Variablenreferenzen (zählt die Variable selbst)

Zum Beispiel

<code>   $var = "laruence";    //第1次
   $var_1 = &$var;       //第2次

   $var1 = $var;
   $var2 = $var;
   $var3 = $var;
   $var4 = $var;
</code>
Nach dem Login kopieren
Nach dem Login kopieren
Also können wir von xdebug_debug_zval is_red=1;refcount=2;

erhalten

  • Wenn auf die Variable nicht verwiesen wird, lautet das mit xdebug_debug_zval erhaltene Ergebnis: is_ref=0;refcount=die Anzahl der kopierten Variablen (zählt die Variable selbst)

Zum Beispiel

<code>   $var = "laruence";     //第1次

   $var1 = $var;          //第2次
   $var2 = $var;          //第3次
   $var3 = $var;          //第4次
   $var4 = $var;          //第5次
</code>
Nach dem Login kopieren
Nach dem Login kopieren
Also können wir aus xdebug_debug_zval is_red=0;refcount=5;

erhalten

Über debug_zval_dump:

  • Wenn eine Variablenreferenz vorhanden ist, lautet das Ergebnis der Verwendung von debug_zval_dump: refcount=1 (immer = 1)

Zum Beispiel

<code>   $var = "laruence";    
   $var_1 = &$var;       

   $var1 = $var;
   $var2 = $var;
   $var3 = $var;
   $var4 = $var;
</code>
Nach dem Login kopieren
Nach dem Login kopieren
Aus debug_zval_dump können wir also Folgendes erhalten: refcount=1;

    Wenn auf die Variable nicht verwiesen wird, lautet das mit debug_zval_dump erhaltene Ergebnis: refcount = die Anzahl der Kopien der Variablen (die Variable selbst wird gezählt) 1
  • Zum Beispiel

Also können wir aus xdebug_debug_zval is_red=0;refcount=6;
<code>   $var = "laruence";    //第1次

   $var1 = $var;          //第2次
   $var2 = $var;          //第3次
   $var3 = $var;          //第4次
   $var4 = $var;          //第5次
</code>
Nach dem Login kopieren
Nach dem Login kopieren
erhalten
Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage