As said before, references aren't pointers. That means, the
    following construct won't do what you expect:
    
   
    What happens is that $var in
    foo will be bound with
    $bar in caller, but then it will be
    re-bound with $GLOBALS["baz"]. There's no way
    to bind $bar in the calling scope to something else
    using the reference mechanism, since $bar is not
    available in the function foo (it is represented by
    $var, but $var has only
    variable contents and not name-to-value binding in the calling
    symbol table).
    You can use returning
    references to reference variables selected by the function.