3 More Discussions You Might Find Interesting
1. What is on Your Mind?
This is an excellent video comment on modern society and the remix is good too:
https://www.youtube.com/watch?v=5DU1B_XkyIk
5DU1B_XkyIk
Watch the video above and post your comments. (3 Replies)
Discussion started by: Neo
3 Replies
2. Programming
Hey guys,
This is quite simply what I'm trying to make:
A program that runs in a UNIX terminal that you can output text messages to from another machine. These text messages would be prepended with a customized prompt. I'd also like to have the window spew out random dumps of flavor text not... (1 Reply)
Discussion started by: AcerAspirant
1 Replies
3. IP Networking
Hello,
I have a socket programming code to do chatting(both server and client).
But this is limited to a single machines with multi users.
But my target is to perform chat operation on multiple IP addresses in a given LAN in college.
Can you please tell me if I can use TOMCAT as my server to... (3 Replies)
Discussion started by: nsharath
3 Replies
LEARN ABOUT PHP
debug_zval_dump
DEBUG_ZVAL_DUMP(3) 1 DEBUG_ZVAL_DUMP(3)
debug_zval_dump - Dumps a string representation of an internal zend value to output
SYNOPSIS
void debug_zval_dump (mixed $variable, [mixed $...])
DESCRIPTION
Dumps a string representation of an internal zend value to output.
PARAMETERS
o $variable
- The variable being evaluated.
RETURN VALUES
No value is returned.
EXAMPLES
Example #1
debug_zval_dump(3) example
<?php
$var1 = 'Hello World';
$var2 = '';
$var2 =& $var1;
debug_zval_dump(&$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(3).
This behavior is further compounded when a variable is not passed to debug_zval_dump(3) by reference. To illustrate, consider a
slightly modified version of the above example:
Example #2
<?php
$var1 = '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):
Example #3
<?php
$var1 = 'Hello World';
debug_zval_dump($var1);
?>
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(3)), PHP's engine opti-
mizes 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(3) 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
var_dump(3), debug_backtrace(3), References Explained, References Explained (by Derick Rethans).
PHP Documentation Group DEBUG_ZVAL_DUMP(3)