Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Mokonauta en 16 Febrero 2014, 01:51 am



Título: Estupido problema con SHUFFLE..
Publicado por: Mokonauta en 16 Febrero 2014, 01:51 am
Buen día a todos,

Mi problema es tan estupido que me siento demasiado estupido posetando esto en el foro pero no encuentro solucion y ya me arde la cabeza! :(

Ok, empiezo, la idea es sortear 5 lugares (1, 2, 3, 4, 5) de manera aleatoria entre 5 usuarios, al prinicipio dije "Fácil!, solo los acomodo en un arreglo y le hago un shuffle() y listo, me debe regresar el arreglo con con los números aleatorios" pero estaba muy equivocado.

En efecto shuffle() altera el arreglo de manera que los valores quedan desordenados aleatoriamente (como lo deseado) pero al momento de impromir, OHH problema!  :o

Solo prueben el siguiente código para que vean a lo que me refiero:

Código
  1. $nums = range(1,5); // Se crea arreglo con el rango de numeros del 1 al 5
  2. shuffle($nums); // Altera el arreglo y acomoda los numeros de manera aleatoria
  3.  
  4. /*
  5. * Hasta aquí si hago un var_dumo($nums); me regresa el array alterado
  6. * Ahora imprimamos
  7. */
  8.  
  9. foreach($nums as $num){
  10.   echo $num.'<br />';
  11. }
  12.  
  13. // Su puestamente deberia devolver una lista renglon a renglon con los numeros aleatorios, pero en vez de eso regresa esa lista 5 veces, ejemplo:
  14. // 124534253413415242534134152
  15.  
  16.  

Es como si por cada vez q se imprimiera un nuevo numero se hiciera el shuffle otra vez y empezara desde el principio, no tiene sentido.

Ya probe asigandole el shuffle a una variable, tambien utilizando un for para que solo imprima los primeros 5 numeros pero el codigo no para hasta que termina, es decir, por cada ciclo for imprime 5 numeros aleatorios, en total 25 numeros!!!

Alguien seria tan amable de iluminarme?
Gracias  ;D


Título: Re: Estupido problema con SHUFFLE..
Publicado por: Mokonauta en 16 Febrero 2014, 02:00 am
Olvidenlo, en efecto soy tan estupido que estaba incluyendo mi funcion en otro foreach ... :/

Saludos