Buscador


En todo Internet
En Uterra.Com

Contenidos


Si hubo dos cosas que me costó bastante comprender en aquellos momentos en que me iniciaba con PHP, una fue los arrays, y la segunda fueron los bucles.

Con este código que vamos a desarrollar, mas que un código de ayuda al programador, vamos a tratar de ser un poco mas didacticos y comprender como se pueden combinar los array y los bucles para ahorrarnos trabajo.

Dicho esto, vamos a crear un campo select que contenga los últimos 50 años, algo sencillo, muy sencillo, pero pesado y aburrido.

Para ello, lo primero es determinar el año actual, lo cual lo hacemos mediante la función date(). Para determinar el año de comienzo, restamos 50, que son los años que queremos poner en el select. De esta manera ya tenemos el comienzo y el fin del bucle.

Seguidamente nos preguntamos que tipo de bucle vamos a utilizar. Dado que sabemos el número de iteracciones que tendrá el bucle, conocemos el inicio del bucle y el final, elegimos el bucle FOR. Creamos el bucle, que comienza 50 años atrás, y finaliza en año actual. Determinamos un incremento de uno en una mediante la ++$v.

Para el select vamos a generar dos valores, el valor que se envía, mediante la variable $valores y el valor que presenta el select y ve el usuario mediante la variable $opcion. Y listo, ya tenemos nuestro select con los últimos 50 años.

Pero no nos vamos a quedar aquí, aunque en realidad la tarea que habiamos planteado ya esta resuelta. Ahora, imaginemos que tenemos que usar los valores generados por el bucle para otros fines. Lo que haremos para eso, es almacenar esos valores en una variable. Pero dado que son varios lo valores, 100 concretamente, 50 para el valor enviado, y otros 50 para el valor que presenta el select, tenemos que recurrir a una forma de tener todos esos valores, así que creamos dos array, uno para el valor enviado, y otro para el valor que se presenta en el select al usuario. Esto lo hacemos dentro del bucle con la expresión $array_xxx[$v] = $xxx; y listo, así de sencillo.

Un detalle muy importante que observar, quizás no imaginado por el lector, es el efecto que produce sobre las clave del array la ordenación sort($array_valores);. Como puede verse, al aplicar una ordenación, las claves del array comienzan desde cero, en lugar de hacerlo desde el valor que habiamos generado inicialmente con el bucle.

Sin más os dejo la sintaxis y la impresión de los valores de los array, que no son otra cosa más que los valores generados por el bucle. También se agrega en la tercera columna visible en la demo la expresión básica de un array que realiza una acción x número de veces.

*Nota: se recomienda ver el código fuente de la demo.

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="iso-8859-1" />
<title>Select con los ultimos 50 años.</title>
</head>

<body>

<select name="year">
                    <?php     
                            $anio_menor 
date('Y') - 50;
                            
$anio_actualdate('Y');
                            
                    for (
$v $anio_menor$v $anio_actual; ++$v) { 
                        
$valores = ++$anio_menor;
                        
$opcion "Año " "$valores";
                        
                            echo 
"<option value=\"$valores\">$opcion</option>";
                            
                        
$array_valores[$v] = $valores;            // Creamos array con los años
                        
$array_opcion[$v] = $opcion;            // Creamos array con las opciones
                        
                        

                    
?>
</select>

<p><hr></p>

    <table border="1" cellpadding="10" cellspacing="3">
        <tr>
            <td colspan="3"> Contenido de los array </td>
        </tr>
        <tr>
            <td valign="top"><?php
                    
echo '<p>» Array A</p>';
                    
sort($array_valores);
                    
                    echo 
'<pre>';
                    
print_r($array_valores);
                    echo 
'</pre>';

            
?></td>
            <td valign="top"><?php 
                    
echo '<p>» Array B</p>';
                    
                    echo 
'<pre>';
                    
print_r($array_opcion);
                    echo 
'</pre>';
            
?></td>
            <td valign="top"><?php 
                
echo '<p>» Ejemplo simple.</p>';
                
                for (
$a 0$a 40$a++) { 
                    echo 
"Escribimos esta frase 40 veces <br />"
                } 
            
?></td>
        </tr>
    </table>

</body>

</html>

Código PHP