debug_zval_dump în PHP

Afișare PHP 4+

Afișează o variabilă ca var_dump, plus detalii interne: numărul de referințe și modul de stocare.

Sintaxă
debug_zval_dump(mixed $value, mixed ...$values): void

Ce face debug_zval_dump

debug_zval_dump arată cum păstrează PHP valoarea în memorie. Pentru tablouri afișează refcount, adică de câte locuri este folosit același tablou, și dacă este packed (chei 0, 1, 2…). Textele fixe din cod apar ca interned.

Este o unealtă pentru a înțelege copierea la scriere (copy-on-write): $b = $a nu copiază tabloul, ci crește numărul de referințe până la prima modificare. Pentru depanarea obișnuită, var_dump este suficient.

Parametri

Parametru Descriere
$value, ...$values Valorile inspectate.

Ce returnează

Nimic.

Exemple

Exemplul 1: Un tablou partajat de două variabile

<?php
$a = [1, 2, 3];
$a[] = 4;
$b = $a;

debug_zval_dump($a);

Rezultat

array(4) packed refcount(3){
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
}

Greșeli frecvente

  • Încerci să tragi concluzii din valoarea exactă a lui refcount. Ea include și referințe temporare făcute chiar de apel și diferă între versiuni de PHP.

Comenzi înrudite

  • var_dump: Afișează tipul și valoarea exactă a unei variabile. Este principalul instrument de depanare.
  • memory_get_usage / memory_get_peak_usage: Returnează câtă memorie folosește scriptul acum (memory_get_usage) sau maximul atins (memory_get_peak_usage).