IT. Expert System.


Dumps a string representation of an internal zend value to output


(PHP 4 >= 4.2.0, PHP 5)

debug_zval_dumpDumps a string representation of an internal zend value to output


void debug_zval_dump ( mixed $variable )

Dumps a string representation of an internal zend value to output.



The variable being evaluated.

Return Values

No value is returned.


Example #1 debug_zval_dump() example

'Hello World';
$var2 '';

$var2 =& $var1;


The above example will output:

 &string(11) "Hello World" refcount(3) 

Note: Beware the refcount

The refcount value returned by this function is non-obvious in certain circumstances. For example, a developer might expect the above example to indicate a refcount of 2. The third reference is created when actually calling debug_zval_dump().

This behavior is further compounded when a variable is not passed to debug_zval_dump() by reference. To illustrate, consider a slightly modified version of the above example:

'Hello World';
$var2 '';

$var2 =& $var1;

debug_zval_dump($var1); // not passed by reference, this time

The above example will output:

 string(11) "Hello World" refcount(1) 

Why refcount(1)? Because a copy of $var1 is being made, when the function is called.

This function becomes even more confusing when a variable with a refcount of 1 is passed (by copy/value):

'Hello World';


The above example will output:

 string(11) "Hello World" refcount(2) 

A refcount of 2, here, is extremely non-obvious. Especially considering the above examples. So what's happening?

When a variable has a single reference (as did $var1 before it was used as an argument to debug_zval_dump()), PHP's engine optimizes the manner in which it is passed to a function. Internally, PHP treats $var1 like a reference (in that the refcount is increased for the scope of this function), with the caveat that if the passed reference happens to be written to, a copy is made, but only at the moment of writing. This is known as "copy on write."

So, if debug_zval_dump() happened to write to its sole parameter (and it doesn't), then a copy would be made. Until then, the parameter remains a reference, causing the refcount to be incremented to 2 for the scope of the function call.

See Also


Android Reference

Java basics

Java Enterprise Edition (EE)

Java Standard Edition (SE)





Java Script








Design patterns

RFC (standard status)

RFC (proposed standard status)

RFC (draft standard status)

RFC (informational status)

RFC (experimental status)

RFC (best current practice status)

RFC (historic status)

RFC (unknown status)

IT dictionary

All information of this service is derived from the free sources and is provided solely in the form of quotations. This service provides information and interfaces solely for the familiarization (not ownership) and under the "as is" condition.
Copyright 2016 © ELTASK.COM. All rights reserved.
Site is optimized for mobile devices.
Downloads: 516 / 158676764. Delta: 0.02468 с