$var = 1;
debug_zval_dump($var);
Output:
long(1) refcount(2)
$var = 1;
$var_dup = &$var;
debug_zval_dump($var);exit
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.
-- Credits go to the php manual. Read the whole description that comes with the function and you should've even has asked it.
--- Edit: Woops, I should read more comments before answering :D Anyways, this is the answer to the question as mentioned before.