Bueno, bueno la razón por la que
Código PHP:
Ver original<?php
$b =& $a[0];
echo '<br />';
$c = $a;
$c[0] = 'bar';
echo '<br />';
$c puede modificar a las referencia es que los array guardan las referencia.
Explicado mejor: En referencias "comunes" como indicar
las referencias no persisten, solo son asignadas a las variables que van a estar mirando el mismo punto.
Pero cuando se hace referencia a un valor en el array
Cuando voy a asignar a otra variable
estoy llevando todo lo que contenga el array y con ello la referencia. Por eso, si yo hago un cambio a ese valor en específico que tiene la referencia
Se modifica la referencia, porque los array mantienen la referencia (tienen persistencia), es como decir que los array son portables con todos los elementos que tienen en su interior.
Si hubiera tomado la referencia directamente
No se modifica la referencia porque la estoy declarando como "comunmente" se llamaría, en forma directa, no con un contenedor como lo haría el array.
Dejo a otro que haga el reto