<pre><?php
$var1 = 'ccc';
$var2 = 'ccc';
echo "separate variables\n";
debug_zval_dump($var1, $var2);
echo "Copying variable just adds references to the same value\n";
$copy = $var1;
debug_zval_dump($var1, $copy);
echo "Using a reference adds references to the same value \n";
$reference =& $var2;
debug_zval_dump($var2, $reference);
echo "Using a copy and a reference of the same value actually creates a clone \n";
$reference2 =& $var1;
debug_zval_dump($var1, $copy, $reference2);
<pre>separate variables
string(3) "ccc" interned
string(3) "ccc" interned
Copying variable just adds references to the same value
string(3) "ccc" interned
string(3) "ccc" interned
Using a reference adds references to the same value
string(3) "ccc" interned
string(3) "ccc" interned
Using a copy and a reference of the same value actually creates a clone
string(3) "ccc" interned
string(3) "ccc" interned
string(3) "ccc" interned
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
<pre>separate variables
string(3) "ccc" interned
string(3) "ccc" interned
Copying variable just adds references to the same value
string(3) "ccc" interned
string(3) "ccc" interned
Using a reference adds references to the same value
string(3) "ccc" interned
string(3) "ccc" interned
Using a copy and a reference of the same value actually creates a clone
string(3) "ccc" interned
string(3) "ccc" interned
string(3) "ccc" interned
<pre>separate variables
string(3) "ccc" refcount(1)
string(3) "ccc" refcount(1)
Copying variable just adds references to the same value
string(3) "ccc" refcount(1)
string(3) "ccc" refcount(1)
Using a reference adds references to the same value
string(3) "ccc" refcount(1)
string(3) "ccc" refcount(1)
Using a copy and a reference of the same value actually creates a clone
string(3) "ccc" refcount(1)
string(3) "ccc" refcount(1)
string(3) "ccc" refcount(1)
Output for 7.1.5 - 7.1.6
<pre>separate variables
string(3) "ccc" refcount(3)
string(3) "ccc" refcount(3)
Copying variable just adds references to the same value
string(3) "ccc" refcount(5)
string(3) "ccc" refcount(5)
Using a reference adds references to the same value
string(3) "ccc" refcount(4)
string(3) "ccc" refcount(4)
Using a copy and a reference of the same value actually creates a clone
string(3) "ccc" refcount(6)
string(3) "ccc" refcount(6)
string(3) "ccc" refcount(6)
<pre>separate variables
string(3) "ccc" refcount(2)
string(3) "ccc" refcount(2)
Copying variable just adds references to the same value
string(3) "ccc" refcount(4)
string(3) "ccc" refcount(4)
Using a reference adds references to the same value
string(3) "ccc" refcount(1)
string(3) "ccc" refcount(1)
Using a copy and a reference of the same value actually creates a clone
string(3) "ccc" refcount(1)
string(3) "ccc" refcount(2)
string(3) "ccc" refcount(1)