¿Cómo funciona realmente foreach en PHP? Entendiendo la copia y las referencias
¡Hola a todos! Empecé a estudiar PHP y me encontré con un comportamiento muy extraño del bucle `foreach`. Escribí un código simple, pero los resultados me confundieron.
```php
1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
// ¡Esperaba que todos los valores se duplicaran!
```
Pensé que `$value` era una referencia al elemento del array, pero resultó que es una copia. Bien, entonces probé usando `&`:
```php
2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ) — ¡funciona!
```
Pero luego leí que hacer esto es peligroso, porque `$value` sigue siendo una referencia al último elemento después del bucle. Y también escuché sobre los "punteros internos del array" y que `foreach` no funciona tan simple como parece.
¿Alguien podría explicar cómo `foreach` maneja l