Avatar ·

¿Cómo funciona realmente foreach en PHP? Análisis detallado con ejemplos

¡Saludos a todos! Llevo varios meses escribiendo en PHP, pero todavía no entiendo completamente cómo funciona foreach. En la documentación dice que es una "forma conveniente de iterar arrays", pero me atormentan preguntas para las que no encuentro respuestas. Por ejemplo, sé que al usar foreach con referencia (&$value) se pueden modificar los elementos del array. Pero ¿por qué después del bucle la variable $value sigue referenciando al último elemento? Esto provoca bugs inesperados. También me interesa: ¿qué ocurre "bajo el capó"? ¿Se crea una copia del array en cada foreach? He oído que PHP usa el mecanismo copy-on-write, pero no entiendo cómo funciona en el contexto de los bucles. Aquí hay un ejemplo que me desconcierta: ```php $array = [1, 2, 3]; foreach ($array as &$value) { $value *= 2; } // Ahora $array = [2, 4, 6] // Pero si después del bucle hago: foreach ($array as $value) { echo $value; } // Resultado: 2 4 4 en lugar de 2 4 6. ¡¿Por qué?! ``` También he notado que al usar foreach en arrays anidados