Ver Mensaje Individual
  #341 (permalink)  
Antiguo 09/05/2011, 19:48
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Juego: "¿Dónde está el error?"

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.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 09/05/2011 a las 20:32 Razón: error escritura