Heim >Backend-Entwicklung >PHP-Tutorial >Über PHPs debug_zval_dump und xdebug_debug_zval

Über PHPs debug_zval_dump und xdebug_debug_zval

WBOY
WBOYOriginal
2016-10-23 00:12:551018Durchsuche

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>

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>

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>

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>

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>
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>
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>
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>
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>
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>
erhalten
Stellungnahme:
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