Can someone explain to me in a simple language why $a = 21 in the final output?
$a = '1';
echo $a . "<br>"; // result 1
$b = &$a;
echo $b . "<br>"; // result 1
$b = "2$b";
echo $b . "<br>"; // result 21
echo $a . "<br>"; // result 21 WHY?
echo $a . ", " . $b; // result 21, 21
Thank you. I appreciate the help very much.
It's because when you do
$b = "2$b";
it means "Set the value of $b to the string "2" followed by whatever the current value of $b is.
Earlier you put
$b = &$a;
This means "create a new reference for $a and call it $b", or in other words make $b point at the same thing in memory that $a is pointing at.
When you update the value of $b you're really updating the value that's stored in the memory block that both $a and $b point at, so once you've set $b to a particular value $a will be the same value because they both reference the same thing.