sábado, 14 de mayo de 2011

9. Los arrays III

Ya estamos aquí de nuevo, hoy vamos a explicar otra parte de los arrays, más concretamente los arrays tridimensionales.

ARRAYS TRIDIMENSIONALES
<?
$familia=array(array(array("E", "Eva", 20),
                     array("P", "Pilar", 30),
                     array("C" "Celia", 25)
                     ),
               array(array("D", "David", 32),
                     array("A", "Ana", 18),
                     array("I", "Isaac", 21)

                                                    ),

               array(array("O", "Oscar", 1),
                     array("J", "Jacobo", 4),
                     array("L", "Laura", 3)
                     )
);

?>
Este array sería un array familiar, en el primer bloque donde aparecen Eva, Pilar y Celia serían, hermanos, el siguiente bloque serían primos y el último serían sobrinos. Vamos a ver un ejemplo con la sentencia for de este array:
<?
$familia=array(array(array("E", "Eva", 20),
                     array("P", "Pilar", 30),
                     array("C" "Celia", 25)
                     ),
               array(array("D", "David", 32),
                     array("A", "Ana", 18),
                     array("I", "Isaac", 21)

                     ),

               array(array("O", "Oscar", 1),
                     array("J", "Jacobo", 4),
                     array("L", "Laura", 3)
                     )
              );
 for($parentesco=0;$parentesco<3;$parentesco++)
  {
echo "Parentesco $parentesco<br>";
 for($fila=0;$fila<3;$fila++)
  {
 for($columna=0;$columna<3;$columna++)
  {
echo $familia[$parentesco][$fila][$columna]."<br>";
  }
  }
  }
?>
Y nos aparecerá la siguiente pantalla:
Lo que ha hecho la función for es recorrer todos los elementos del array.

CLASIFICACION DE ARRAYS
Los elementos de los arrays se pueden clasificar de diferentes maneras, bien de forma ascendente, descente, etc.
Para clasificar los elementos de forma ascendente utilizamos sort. Lo vemos mediante un ejemplo:
<?
 $nombres=array("Eva", "Pilar", "Celia");
   echo $nombres[2]."<br>";
  sort ($nombres);
   echo $nombres[2];
?>
Y nos aparece la siguiente pantalla:

El primer nombre es Celia porque ocupa el lugar numero 2, pero luego con sort aparece Pilar. Sort lo que ha hecho ha sido ordenar los nombres de forma ascendente de forma que ahora están ordenados de la siguiente forma: Eva, Celia y Pilar.
Cuando usamos arrays asociativos podemos utilizar variantes de la función sort para clasificar los elementos. Una de estas variantes es la función asort.
<?
$nombres=array("Eva"=>20, "Pilar"=>30, "Celia"=>25);
   asort ($nombres);
?>
La función asort ordenará los elementos del array empezando por las edades. (Seguimos con el ejemplo del array de nombres, los numeros son las edades de cada una).
Si quisieramos clasificar el array por los nombres en vez de por las edades usaríamos la función ksort.
<?
$nombres=array("Eva"=>20, "Pilar"=>30, "Celia"=>25);
   ksort ($nombres);
?>
Hemos visto las funciones sort, asort y ksort para la clasificiación ascendente. Ahora vamos a ver la clasificación a la inversa, es decir, la clasificación descendente, sólo basta añadir una r a cada una de las funciones. Los vemos con una serie de ejemplos:
<?
 $nombres=array("Eva", "Pilar", "Celia");
   echo $nombres[2]."<br>";
  rsort ($nombres);//la clasificación descendente con la función   rsort    echo $nombres[2];
?>
Y nos aparece la siguiente pantalla:

Nos aparece el nombre Celia porque ocupa el lugar numero 2. Si hacemos la clasificación de forma descendente Celia sigue ocupando el 2º lugar porque pasaría a estar clasificado de la siguiente manera: Pilar, Celia, Eva.Las demás funciones que hemos visto asort y ksort para la clasificación de forma ascendente, para la clasificación a la inversa sería de la siguiente forma:
<?
$nombres=array("Eva"=>20, "Pilar"=>30, "Celia"=>25);
  rasort ($nombres);
?>
Rasort lo que hará es ordenar el array empezando por las edades de forma descendente.
<?
$nombres=array("Eva"=>20, "Pilar"=>30, "Celia"=>25);
rksort ($nombres);
?>
Rksort lo que hará es ordenar los nombres de forma ascendente.

Creo que hasta aquí es suficiente el tema de los arrays, podéis practicar vosotros mismos creando vuestros propios scripts con arrays para practicar los temas que hemos dado sobre los arrays. En la próxima entrada publicaré una serie de practicas. De momento hasta pronto!

8. Los arrays II

Ya estoy aquí de vuelta, hoy voy a empezar explicando lo que son los arrays bidimensionales.
ARRAYS BIDIMENSIOINALES
$nombres=array(array(“E”, “Eva”, 20),
               array(“P”, “Pilar”, 30),
               array(“C”, “Celia”, 28) );
Como podeís ver hay tres arrays dentro de un array, el primer array tiene el índice cero, los elementos están indexados del 0 al 2; el segundo array tiene el índice uno y el tercer array tiene el índice 2. Lo vemos con un ejemplo para que quede más claro lo que quiero decir. Queremos que en pantalla nos salga impreso el nombre Pilar, lo haríamos de la siguiente forma:
<?
$nombres=array(array(“E”, “Eva”, 20),
               array(“P”, “Pilar”, 30),
               array(“C”, “Celia”, 28) );
echo $nombres[1][1];
?>
Si lo comprobamos nos sale en pantalla:


Si quisiéramos imprimir varios elementos de un array o elementos de diferentes arrays, utilizaríamos la concatenación. Ahora queremos que se imprima Pilar, 20 y C, lo haríamos de la siguiente forma:
<?
$nombres=array(array(“E”, “Eva”, 20),
               array(“P”, “Pilar”, 30),
               array(“C”, “Celia”, 28) );
echo $nombres[0][2].$nombres[1][1].$nombres[2][0];
?>
Y nos aparecerá en pantalla lo siguiente:

Para que salga separado podríamos modificar el echo de la siguiente forma:
echo $nombres[0][2].”, “.$nombres[1][1].”, “$nombres[2][0]”.”;
Saldría impreso así: 20, Pilar, C.
Si quisiéramos hacer un script que recorriera todos los elementos de cada array lo haríamos así:
<?
$nombres=array(array(“E”, “Eva”, 20),
               array(“P”, “Pilar”, 30),
               array(“C”, “Celia”, 28) );
for($fila=0; $fila<3; $fila++)
   {
for($columna=0; $columna<3; $columna++)
   {
echo $nombres[$fila][$columna]."<br>";
   }
   }
?>
Y nos saldría por pantalla:

La variable $fila se refiere a los arrays y la variable $columna se refiere a los elementos que hay en el interior de cada array. Un array es una tabla, hay que tratarla como una tabla, por eso es conveniente que cuando nos refiramos a los elementos de los arrays lo hagamos con una variable llamada $columna y en los arrays $fila, para no confundirnos. Sin embargo, si queremos denominar a cada elemento del array con un nombre en vez de con un numero, por ejemplo:
Inicial
Nombre
Edad
E
Eva
20
P
Pilar
30
C
Celia
28
Se haría de la siguiente forma:

<?
$nombres=array(array(Inicial =>"E",
                     Nombre => "Eva",
                     Edad =>20),
               array(Inicial =>"P",
                     Nombre => "Pilar",
                     Edad => 30),
               array(Inicial =>"C",
                     Nombre = >"Celia",
                     Edad =>28) );
?>
Si quiseramos recorrer todos los nombres de los arrays lo haríamos de la siguiente manera:
<?
$nombres=array(array(Inicial =>"E",
                     Nombre => "Eva",
                     Edad =>20),
               array(Inicial =>"P",
                     Nombre => "Pilar",
                     Edad => 30),
               array(Inicial =>"C",
                     Nombre = >"Celia",
                     Edad =>28) );
for ($fila=0; $fila<=2; $fila++)
echo $nombres[$fila][“Nombre”].”<br>”;
?>
Y nos sale en pantalla

Creo que hasta aquí es suficiente. En la próxima entrada seguiré explicando los arrays. De momento, os dejo para que vosotros mismos podáis hacer vuestro propios programas con arrays, si queréis me lo enviáis y lo publico en el blog. De momento hasta pronto!

martes, 10 de mayo de 2011

7. Los arrays

Soluciones a las prácticas

Ya estoy aquí de nuevo, hoy voy a hablar de los arrays.
Un array es una variable que almacena un conjunto de valores. Un array puede tener muchos elementos .

ARRAY INDEXADO NUMERICAMENTE
$nombres=array(“Eva”, “Pilar”, “Pepe”);
A cada elemento que forma el array se le da un valor numérico que es su índice y que empieza por 0. En el caso del array $nombres Eva tendría el valor numérico 0, Pilar el valor numérico 1 y Pepe el valor numérico 2. Estos valores junto con los nombres son clave para acceder al array. Aunque esto se puede modificar, podemos indicar que en vez de empezar por 0 empiece por 1.

Para acceder al array Eva es lo mismo que $nombre[0], para el array Pilar $nombre[1] y para el array Pepe $nombre [2]. De forma que si hacemos un pequeño script para que nos aparezca los tres nombres impresos en pantalla haremos lo siguiente:
<?
$nombres=array(“Eva”, “Pilar”, “Pepe”);
echo $nombres[0].”<br>”;
echo $nombres[1].”<br>”;
echo $nombres[2].”<br>”;
?>
Para que nos salga los nombres que hay dentro del array impresos en pantalla se lo debemos indicar como hemos hecho anteriormente, de lo contrario no nos aparecerá ningún elemento del array. Es decir si hiciéramos esto:
<?
$nombres=array(“Eva”, “Pilar”, “Pepe”);
echo $nombres.”<br>”;
?>
Nos aparecerá la siguiente pantalla:

Porque no le hemos indicado que nombre queremos que aparezca en pantalla.
Si quisiéramos introducir un nuevo elemento en el array lo haríamos de la forma siguiente:
$nombres=array(“Eva”, “Pilar”, “Pepe”);
$nombre[3]=”Celia”;

El array indexado numérciamente
$nombres=array(“Eva”, “Pilar”, “Pepe”);
Se puede escribir también de la siguiente forma:
$nombres[0]=”Eva”;
$nombres[1]=”Pilar”;
$nombres[2]=”Pepe”;

Si quisiéramos cambiar el nombre de Pilar por Antonio se haría de la siguiente forma: $nombres[1]=”Antonio”;
Por lo que el array de Pilar pasaría a ser Antonio.
Vamos a ver un ejemplo para tenerlo más claro:
<?
$nombres[0]="Eva";
$nombres[1]="Pilar";
$nombres[2]="Pepe";
for($i=0; $i<2; $i++) //El limite es 2 porque hay hasta 2 elementos en el array
echo "$nombres[$i]<br>";
?>
Si probamos el programa nos saldrá en pantalla
Eva
Pilar
Pepe

ARRAY ASOCIATIVO
$edad= array(“Eva”=>20, “Pilar”=>31, “Pepe”=>25);
A diferencia del array indexado numéricamente los elementos que componen el array asociatvo no van indexados numéricamente, sino que van indexados por su nombre. Es decir Eva no tendrá el valor 0, sino que nos referiremos a este elemento por su nombre, por Eva.
Lo vemos con un ejemplo:
<?
$edad= array(“Eva”=>20, “Pilar”=>31, “Pepe”=>25);
echo “$edad[Eva]”;
?>
Y nos aparece la siguiente pantalla:
 Nos imprime la edad de Eva. 

Vamos a ver un ejemplo de un array asociativo:
<?
$edad= array("Eva"=>20, "Pilar"=>31, "Pepe"=>25);
while($personas=each($edad))
{
echo $personas["key"];
echo " tiene ";
echo $personas["value"];
echo " años";
echo "<br>";
}
?>
Y nos imprimirá la siguiente pantalla:

Si observamos el código tenemos la función each. Each lo que hace es recorrer el array empezando por el primer elemento y convirtiendo el siguiente en el elemento actual.

Bueno creo que por hoy voy a dar como finalizado el tema de los arrays, en la próxima entrada seguiré hablando de los arrays, haré una segunda parte. Mientras tanto ya podéis practicar haciendo vuestros propios scripts con arrays de lo que hemos visto de momento. Si queréis me lo podeís enviar y lo publicaré en el blog. Me gustaría que participáramos un poco todos, que enviaráis ideas, sugerencias, prácticas, ejercicios, etc.De momento me despido, hasta pronto!