Foros del Web » Programando para Internet » PHP »

Problema el recoger variables

Estas en el tema de Problema el recoger variables en el foro de PHP en Foros del Web. Hola gente, tengo el siguiente script, el funcionamiento es simple, genera 3 letras aleatorias y 3 numeros asociados a ellas, los que en realidad pertenecen ...
  #1 (permalink)  
Antiguo 24/08/2009, 19:39
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 21 años, 5 meses
Puntos: 5
Problema el recoger variables

Hola gente, tengo el siguiente script, el funcionamiento es simple, genera 3 letras aleatorias y 3 numeros asociados a ellas, los que en realidad pertenecen a una matriz de 5x4 pero lo que necesito hacer es que al final del bucle tenga $var1, $var2 y $var3 para imprimirlas como valor en un cuadro de texto.

el code:

Código PHP:
//Variables
$DesdeLetra "A";
$HastaLetra "E";

// LETRA A
$DesdeNumeroA 0;
$HastaNumeroA 3;

// LETRA B
$DesdeNumeroB 4;
$HastaNumeroB 7;

// LETRA C
$DesdeNumeroC 8;
$HastaNumeroC 11;

// LETRA D
$DesdeNumeroD 12;
$HastaNumeroD 15;

// LETRA E
$DesdeNumeroE 16;
$HastaNumeroE 19;


for (
$contador 1$contador <= 3$contador++)
{
$letraAleatoria chr(rand(ord($DesdeLetra), ord($HastaLetra))); 

    if (
$letraAleatoria == 'A'
    {
     
$letraAleatoria_A $letraAleatoria;
     
$numeroAleatorio_A rand($DesdeNumeroA$HastaNumeroA);
     
     switch (
$numeroAleatorio_A)
        {
        case 
0:
            echo 
$letraAleatoria_A"1 <br>";
            break;
        case 
1:
            echo 
$letraAleatoria_A"2 <br>";
            break;
        case 
2:
            echo 
$letraAleatoria_A"3 <br>";
            break;        
        case 
3:
            echo 
$letraAleatoria_A"4 <br>";
            break;    
        }    
     
    }elseif (
$letraAleatoria == 'B')
        {
         
$letraAleatoria_B $letraAleatoria;
         
$numeroAleatorio_B rand($DesdeNumeroB$HastaNumeroB);
         
          switch (
$numeroAleatorio_B)
                {
                case 
4:
                    echo 
$letraAleatoria_B"1 <br>";
                    break;
                case 
5:
                    echo 
$letraAleatoria_B"2 <br>";
                    break;
                case 
6:
                    echo 
$letraAleatoria_B"3 <br>";
                    break;        
                case 
7:
                    echo 
$letraAleatoria_B"4 <br>";
                    break;    
                }    
         
        }elseif (
$letraAleatoria == 'C')
            {
             
$letraAleatoria_C $letraAleatoria;
             
$numeroAleatorio_C rand($DesdeNumeroC$HastaNumeroC);
             
              switch (
$numeroAleatorio_C)
                    {
                    case 
8:
                        echo 
$letraAleatoria_C"1 <br>";
                        break;
                    case 
9:
                        echo 
$letraAleatoria_C"2 <br>";
                        break;
                    case 
10:
                        echo 
$letraAleatoria_C"3 <br>";
                        break;        
                    case 
11:
                        echo 
$letraAleatoria_C"4 <br>";
                        break;    
                    }    
             
            }elseif (
$letraAleatoria == 'D')
                {
                 
$letraAleatoria_D $letraAleatoria;
                 
$numeroAleatorio_D rand($DesdeNumeroD$HastaNumeroD);
                 
                  switch (
$numeroAleatorio_D)
                    {
                    case 
12:
                        echo 
$letraAleatoria_D"1 <br>";
                        break;
                    case 
13:
                        echo 
$letraAleatoria_D"2 <br>";
                        break;
                    case 
14:
                        echo 
$letraAleatoria_D"3 <br>";
                        break;        
                    case 
15:
                        echo 
$letraAleatoria_D"4 <br>";
                        break;    
                    }    

                }elseif (
$letraAleatoria == 'E')
                    {
                    
                     
$letraAleatoria_E $letraAleatoria;
                     
$numeroAleatorio_E rand($DesdeNumeroE$HastaNumeroE);
                     
                      switch (
$numeroAleatorio_E)
                        {
                        case 
16:
                            echo 
$letraAleatoria_E"1 <br>";
                            break;
                        case 
17:
                            echo 
$letraAleatoria_E"2 <br>";
                            break;
                        case 
18:
                            echo 
$letraAleatoria_E"3 <br>";
                            break;        
                        case 
19:
                            echo 
$letraAleatoria_E"4 <br>";
                            break;    
                        }    
    
                    }
    } 
alguna sugerencia??

gracias.
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #2 (permalink)  
Antiguo 14/09/2009, 00:20
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Problema el recoger variables

Hola
Bueno, pues para solventar tu tema creería que puedes manejar un array que te almacene los resultados en tantas posiciones como iteraciones de contador hagas

Sin embargo, me tome la libertad de mejorar tu codigo, lo posteo para que lo pruebes y me comentes si te soluciona en algo lo que hice
Saludos

Código php:
Ver original
  1. <?php      
  2. $letras = array("A","B","C","D","E");                  
  3. //Array donde por cada letra genero las posiciones y valores necesarios
  4. $letrasnumeros = array("A" => array("0" => "1", "1" => "2", "2" => "3", "3" => "4"),
  5.               "B" => array("4" => "1", "5" => "2", "6" => "3", "7" => "4"),
  6.               "C" => array("8" => "1", "9" => "2", "10" => "3", "11" => "4"),
  7.               "D" => array("12" => "1", "13" => "2", "14" => "3", "15" => "4"),
  8.               "E" => array("16" => "1", "17" => "2", "18" => "3", "19" => "4")
  9.               );
  10. $resultados = array();
  11.  
  12.     for ($contador = 1; $contador <= 3; $contador++)
  13.     {
  14.         //El random lo hago revisando el primer valor de el array letras (En este caso A) y el ultimo (En este caso E), pensando que si
  15.         //a futuro crecen o decrecen las opciones solo sea cuestion de quitar o agregar valores a ese array
  16.         $letraAleatoria = chr(rand(ord($letras[0]), ord($letras[count($letras) - 1])));
  17.             //Manejo las mismas variables $Desde y $Hasta pues ahora cambiaran su valor dependiendo de la letra aleatoria
  18.             if( $letraAleatoria == "A" ){
  19.             $Desde = 0;
  20.             $Hasta = 3;
  21.             }
  22.             else if( $letraAleatoria == "B" ){
  23.             $Desde = 4;
  24.             $Hasta = 7;
  25.             }
  26.             else if( $letraAleatoria == "C" ){
  27.             $Desde = 8;
  28.             $Hasta = 11;
  29.             }
  30.             else if( $letraAleatoria == "D" ){
  31.             $Desde = 12;
  32.             $Hasta = 15;
  33.             }
  34.             else if( $letraAleatoria == "E" ){
  35.             $Desde = 16;
  36.             $Hasta = 19;
  37.             }
  38.         $numeroAleatorio = rand($Desde, $Hasta);
  39.         //Asigno al arreglo $resultados en la posicion $contador el valor del arreglo $letrasAleatorias en su posicion de letra y dentro de esta
  40.         //el valor designado, asi por ej si la letra es A y el $numeroAleatorio es 3 $resultados[$contador] = "A4",
  41.         //o si la letra es E y $numeroAleatorio es 17 $resultados[$contador] = "E2"
  42.         $resultados[$contador] = $letraAleatoria.$letrasnumeros[$letraAleatoria][$numeroAleatorio];
  43.     }
  44.  
  45.     echo "Resultados finales <br>";
  46.     for ($contador = 1; $contador <= 3; $contador++)
  47.     {
  48.         echo $contador." fue ".$resultados[$contador]."<br>";
  49.     }
  50. ?>
  #3 (permalink)  
Antiguo 14/09/2009, 00:50
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Problema el recoger variables

Hola,

Además también podrías reemplazar esto:

Cita:
Iniciado por mortiprogramador Ver Mensaje
Código php:
Ver original
  1. <?php      
  2.             //Manejo las mismas variables $Desde y $Hasta pues ahora cambiaran su valor dependiendo de la letra aleatoria
  3.             if( $letraAleatoria == "A" ){
  4.             $Desde = 0;
  5.             $Hasta = 3;
  6.             }
  7.             else if( $letraAleatoria == "B" ){
  8.             $Desde = 4;
  9.             $Hasta = 7;
  10.             }
  11.             else if( $letraAleatoria == "C" ){
  12.             $Desde = 8;
  13.             $Hasta = 11;
  14.             }
  15.             else if( $letraAleatoria == "D" ){
  16.             $Desde = 12;
  17.             $Hasta = 15;
  18.             }
  19.             else if( $letraAleatoria == "E" ){
  20.             $Desde = 16;
  21.             $Hasta = 19;
  22.             }
  23.         $numeroAleatorio = rand($Desde, $Hasta);
Por esto:

Código PHP:
$t = (ord($letraAleatoria) - ord('A')) * 4;
$numeroAleatorio rand($t$t 3); 
Saludos,
  #4 (permalink)  
Antiguo 14/09/2009, 20:37
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 21 años, 5 meses
Puntos: 5
Respuesta: Problema el recoger variables

@mortiprogramador, muchisimas gracias por la ayuda!!!, tengo una pregunta, si yo quisiera saber el valor que tiene dentro de la matriz A3 que seria 2 o D4 que seria 15, como lo puedo obtener?

muchas gracias.
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #5 (permalink)  
Antiguo 14/09/2009, 23:38
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Problema el recoger variables

Hola
De nada

Modificaria esto
Código php:
Ver original
  1. //Asigno al arreglo $resultados en la posicion $contador el valor del arreglo $letrasAleatorias en su posicion de letra y dentro de esta
  2.         //el valor designado, asi por ej si la letra es A y el $numeroAleatorio es 3 $resultados[$contador] = "A4",
  3.         //o si la letra es E y $numeroAleatorio es 17 $resultados[$contador] = "E2"
  4.         $resultados[$contador] = $letraAleatoria.$letrasnumeros[$letraAleatoria][$numeroAleatorio];
  5.     }
  6.  
  7.     echo "Resultados finales <br>";
  8.     for ($contador = 1; $contador <= 3; $contador++)
  9.     {
  10.         echo $contador." fue ".$resultados[$contador]."<br>";
  11.     }

Por esto

Código php:
Ver original
  1. //Asigno al arreglo $resultados en la posicion $contador el valor del arreglo $letrasAleatorias en su posicion de letra y dentro de esta
  2.         //el valor designado, asi por ej si la letra es A y el $numeroAleatorio es 3 $resultados[$contador] = "A4",
  3.         //o si la letra es E y $numeroAleatorio es 17 $resultados[$contador] = "E2"
  4.         $resultados[$contador][0] = $letraAleatoria.$letrasnumeros[$letraAleatoria][$numeroAleatorio];
  5.         $resultados[$contador][1] = $numeroAleatorio;
  6.     }
  7.  
  8.     echo "Resultados finales <br>";
  9.     for ($contador = 1; $contador <= 3; $contador++)
  10.     {
  11.         echo $contador." fue ".$resultados[$contador][0]." con valor ".$resultados[$contador][1]."<br>";
  12.     }
Saludos
  #6 (permalink)  
Antiguo 15/09/2009, 01:01
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 21 años, 5 meses
Puntos: 5
Respuesta: Problema el recoger variables

Oooohhhhhh muchas gracias!!!!!, me expicarias la diferencia por favor??

muchas gracias!!!!
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #7 (permalink)  
Antiguo 15/09/2009, 23:25
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Problema el recoger variables

Hola
Bueno, a ver si me se explicar

Tenemos esto

$letras = array("A","B","C","D","E");
//Array donde por cada letra genero las posiciones y valores necesarios
$letrasnumeros = array("A" => array("0" => "1", "1" => "2", "2" => "3", "3" => "4"),
"B" => array("4" => "1", "5" => "2", "6" => "3", "7" => "4"),
"C" => array("8" => "1", "9" => "2", "10" => "3", "11" => "4"),
"D" => array("12" => "1", "13" => "2", "14" => "3", "15" => "4"),
"E" => array("16" => "1", "17" => "2", "18" => "3", "19" => "4")
);
$resultados = array();

Ahora, no se que tan familiarizado estes con los arreglos pero piensa en ellos como familias
Asi pues $letras tiene los hijos A,B,C,D,E y los tuvo en orden, es decir, si haces esto
echo $letras[0] veras como resultado A, $letras[1] es B y asi sucesivamente pues los arreglos empiezan desde la posición cero y su orden natural es numerico
Ahora, este orden natural puede ser modificado con lo que se conoce con arrays asociativos, que como su nombre lo dice, asocia elementos, en este caso, asocia un id para el orden (el que naturalmente es 0, 1, etc) con un conjunto de elementos, y a su vez a estos se les puede asociar otros arrays cambiandoles el orden natural (y asi es que hago $letrasNumeros)
Asi pues tenemos el array $letrasNumeros, que, pensandolo como una familia, es una bastante numerosa
por ende $letrasnumeros es la familia, y digamos que son cinco hermanos (A,B,C,D,E) los cuales tienen hijos
(ej, E tiene como hijos 16,17,18,19) en forma ordenada, y ahora el orden natural esta dado, ya no como en $letras que se rastreo
solo a una camada, sino por cada camada de los que vienen de $letras

Asi entonces si imprimieras echo $letrasnumeros['E'][0] no obtendrias nada pues E no tiene un hijo en el orden 0, sino que los hijos
de el fueron los ultimos en orden, es decir, para ver el primer hijo de E tendrias que hacer echo $letrasnumeros['E'][16],
obteniendo ahora si 1 que es el valor que 16 tiene asignado

Y pues ya luego el resultado de querer obtener resultados especificos sobre la familia lo hago con esto

$resultados[$contador][0] = $letraAleatoria.$letrasnumeros[$letraAleatoria][$numeroAleatorio];
$resultados[$contador][1] = $numeroAleatorio;
Donde $resultados va a ser un array que va a tener tantos hijos como aumente $contador, es decir, en este caso $resultados tiene 4 hijos,
y a su vez, esos hijos tienen 2 hijos [0] y [1], y estos son quienes van a tener la información que les vamos a pasar
Asi, 0 tendra la $letraAleatoria concatenada con el punto (.) con el valor del array $letrasnumeros[$letraAleatoria][$numeroAleatorio],
que, para ejemplo de la E, vendria siendo $letrasnumeros['E']['17'] suponiendo que la letra elegida fue la E y el numero aleatorio fue 17, y por ende
$resultados[$contador][0] va a ser igual a 2 , y $resultados[$contador][1] va a ser igual a 17, pues este fue el valor del aleatorio

Enredado??? si un poco, trate de ser lo más explicito, pero pues si aún esto esta en jerga complicada, te recomiendo
que busques sobre arrays en php para que desenredes la madeja
Saludos
  #8 (permalink)  
Antiguo 16/09/2009, 02:09
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 21 años, 5 meses
Puntos: 5
Respuesta: Problema el recoger variables

man, este es un doc muy explicativo sobre el funcionamiento de los arrays, debería estar de postit.. muy bien muchas gracias....

muchas gracias!!!!
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #9 (permalink)  
Antiguo 16/09/2009, 21:34
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Problema el recoger variables

Hola
Que bueno que te haya servido, oye, una pregunta, la pagina de tu firma (insurgentes.cl) es tuya? me ha gustado bastante la página, sobria y con un diseño muy llamativo, y esto me lleva a otra, el diseño es propio o es alguna plantilla de wordpress?
Saludos
  #10 (permalink)  
Antiguo 17/09/2009, 03:17
Avatar de anibalag85  
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Problema el recoger variables

Un aporte interesante, gracias
  #11 (permalink)  
Antiguo 17/09/2009, 07:39
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 21 años, 5 meses
Puntos: 5
Respuesta: Problema el recoger variables

@mortiprogramador es una plantilla de worpress.

saludos
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
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 22:42.