Foros del Web » Programando para Internet » PHP »

bucle infinito, porqué?

Estas en el tema de bucle infinito, porqué? en el foro de PHP en Foros del Web. Hola a todo el mundo, recién estoy empezando con la programación, realmente lo estoy encontrando bastante complicado esto de los algoritmos, pero bueno, poco a ...
  #1 (permalink)  
Antiguo 11/04/2013, 10:50
Avatar de sergi_multimedia  
Fecha de Ingreso: noviembre-2010
Mensajes: 213
Antigüedad: 14 años
Puntos: 4
Pregunta bucle infinito, porqué?

Hola a todo el mundo, recién estoy empezando con la programación, realmente lo estoy encontrando bastante complicado esto de los algoritmos, pero bueno, poco a poco.

Mi duda es la siguiente, he creado un bucle para que me muestre unas imágenes, las imágenes que quiero que me muestre me las muestra, pero luego salen mensajes de "Alerts" en la página en un bucle infinito, me salen estos alerts:

Cita:
Notice: Undefined offset: 0 in /Users/Sergi/Dropbox/htdocs/uoc/Practica1/ex3/ex3.php on line 37

Notice: Undefined offset: 1 in /Users/Sergi/Dropbox/htdocs/uoc/Practica1/ex3/ex3.php on line 37
Mi url es la siguiente:

ex3.php?entrada=3,0,4,1,5,2

y mi código PHP es el siguiente:

Código PHP:
Ver original
  1. $entrada = $_GET['entrada'];
  2.     $entrada = explode(",", $entrada); // Mete cadauno de los valores introducidos en la url en una posición del array
  3.    
  4.     $long = sizeof($entrada); // Cuenta cuantas posiciones(o índices) hay en el array
  5.    
  6.     $long = $long -1; // Como el array empieza por la posición número 0, le descuento uno
  7.    
  8.     $i = 1;
  9.    
  10.     for ($i = 1; $i = $long; $i = $i +1 ){
  11.        
  12.         print "<img src='".$entrada[0]."_.png'><img src='_".$entrada[1].".png'>"; // Esta es la linia 37 de mi código
  13.        
  14.         $sortida = array_shift($entrada);
  15.     }

Saludos y grcias de antemano
  #2 (permalink)  
Antiguo 11/04/2013, 10:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: bucle infinito, porqué?

El segundo parámetro del for() es la condición, en este caso cuando usas un solo signo de igual estas asignando a $i, el valor de $long, lo cual es correcto pero no tiene caso (se evalua a true).

Lo que tienes que hacer es que la condición sea true cuando sea menor, ejemplo $i <= $long para que sea true mientras $i sea menor o igual.

También puedes usar un foreach(), el cual es un poco más sencillo.

Saludos.
  #3 (permalink)  
Antiguo 11/04/2013, 11:08
Avatar de sergi_multimedia  
Fecha de Ingreso: noviembre-2010
Mensajes: 213
Antigüedad: 14 años
Puntos: 4
Respuesta: bucle infinito, porqué?

Cita:
Iniciado por GatorV Ver Mensaje
El segundo parámetro del for() es la condición, en este caso cuando usas un solo signo de igual estas asignando a $i, el valor de $long, lo cual es correcto pero no tiene caso (se evalua a true).

Lo que tienes que hacer es que la condición sea true cuando sea menor, ejemplo $i <= $long para que sea true mientras $i sea menor o igual.

También puedes usar un foreach(), el cual es un poco más sencillo.

Saludos.
Muchas gracias por la contestación tan rápida. Entiendo perfectamente que me quieres decir ;)

He cambiado lo que me has comentado y ahora funciona perfectamente :)

Probaré de hacer un foreach

Saludos y gracias!
  #4 (permalink)  
Antiguo 12/04/2013, 09:20
Avatar de zetahosting  
Fecha de Ingreso: octubre-2011
Mensajes: 119
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: bucle infinito, porqué?

entrada = $_GET['entrada'];
$entrada = explode(",", $entrada); // Mete cadauno de los valores introducidos en la url en una posición del array

$long = sizeof($entrada); // Cuenta cuantas posiciones(o índices) hay en el array


for ($i = 1; $i < $long; $i++){

print "<img src='".$entrada[0]."_.png'><img src='_".$entrada[1].".png'>"; // Esta es la linia 37 de mi código

$sortida = array_shift($entrada);
}




ASI TIENE QUE ESTAR.

aBRAZO
__________________
Excelente WebHosting -> www.zetahosting.net
[email protected]
Twitter: @zetahosting

Etiquetas: bucle, infinito
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:56.