I just read this answer by Bill Karwin.
Note that the $node is pass by reference.
I always thought that variable created there is only ever temporary and exists only until the end of the loop (or maybe it remains set to the last iteration – I have not tested it).
So, what are the advantages of making it pass by reference?
I’m sure there is one, but I can’t figure it out yet.
It has nothing to do with being faster or more efficient.
PHP implements copy-on-write so a variable may refer to the same area of memory until you change its value. Then when you change the variable, PHP decides whether or not to create a copy depending on whether you’re accessing it by value or by reference.
Access by value — changes to a variable creates a copy:
Access by reference — changes to a variable affect the original copy:
Note that all objects in PHP 5 are accessed by reference without using the
&operator.This is a good reason to use objects!
Be very careful using references in PHP, because they can have confusing effects.
Be sure to read this blog: Do not use PHP references by PHP core developer Johannes Schlüter