lo mas seguro me gane la vecina de abimael (lo sabremos pronto)...
pero supongo que es porque en el primer foreach, $color es una referencia de un indice del array (probablemente el ultimo elemento). aparentemente, al $color ser una referencia, en el segundo foreach php no inicializa la variable porque ya existe, entonces lo que hace es asignar el valor a esa referencia el cual es el ultimo indice del array. tendria que destruir (unset) primero la variable antes de volver a usarla.
pd: hace como dos dias jugaba con codigos y se me ocurrio ver que efecto tenia usar una referencia en un foreach, y la verdad no comprendi que era lo que sucedia. justo queria traer ese problema al juego pero no sin antes entenderlo, pero ya abimael se me adelanto!
de todos modos, espero que expliquen bien el problema. me interesa mucho entenderlo.
Código PHP:
<?php
$colors = array('red', 'blue', 'green', 'yellow');
foreach ($colors as &$color) {
$color = strtoupper($color);
}
unset($color);
foreach ($colors as $key => $color) {
$color = strtoupper($color);
}
print_r($colors);
@edit:
continuando con mis pruebas, otra forma de solucionarlo seria indicar en el segundo foreach que $color es una referencia de la misma forma como el primer foreach.
Código PHP:
<?php
$colors = array('red', 'blue', 'green', 'yellow');
foreach ($colors as &$color) {
$color = strtoupper($color);
}
foreach ($colors as $key => &$color) {
$color = strtoupper($color);
}
print_r($colors);
pd2: si gane, paso el turno... lo lamento mucho porque seria la segunda vez que lo hago.