|
Las tablas
Las tablas (o array en inglés), son muy importantes en PHP, ya que
generalmente, las funciones que devuelven varios valores, como las
funciones ligadas a las bases de datos, lo hacen en forma de tabla.
En PHP disponemos de dos tipos de tablas. El primero
sería el clásico, utilizando índices:
<?php
$ciudad[] = "París";
$ciudad[] = "Roma";
$ciudad[] = "Sevilla";
$ciudad[] = "Londres";
print ("yo vivo en " . $ciudad[2] .
"<BR>\n");
?>
Esta es una forma de asignar elementos a una
tabla, pero una forma más formal es utilizando la función array
<?php 
$ciudad = array("París", "Roma", "Sevilla",
"Londres");
//contamos el número de elementos
de la tabla
$numelentos = count($ciudad);
//imprimimos todos los elementos de
la tabla
for ($i=0; $i < $numelentos; $i++)
{
print ("La ciudad $i es
$ciudad[$i] <BR>\n");
}
?>
Sino se especifica, el primer índice es el cero, pero podemos utilizar
el operador => para especificar el indice inicial.
$ciudad = array(1=>"París", "Roma", "Sevilla", "Londres");
Un segundo tipo, son las tablas asociativas, en las cuáles a
cada elemento se le asigna un valor (key) para acceder a él.
Para entenderlo, que mejor que un ejemplo, supongamos que tenemos una
tabla en al que cada elemento almacena el número de visitas a nuestra web
por cada día de la semana.
Utilizando el método clásico de índices, cada día de la semana se
representaría por un entero, 0 para lunes, 1 para martes, etc.
$visitas[0] = 200;
$visitas[1] = 186;
si usamos las tablas asociativas sería
$visitas["lunes"] = 200;
$visitas["martes"] = 186;
o bien,
$visitas = array("lunes"=>200;
"martes"=>186);
Ahora bien, recorrer una tabla y mostrar su contenido es sencillo
utilizando los índices, pero ¿cómo hacerlo en las tablas asociativas?. La manipulación de las tabas asociativas se a hace través de funciones
que actúan sobre un puntero interno que indica la posición. Por
defecto, el puntero se situa en el primer elemento añadido en la tabla,
hasta que es movido por una función:
current - devuelve el valor del
elemento que indica el puntero
pos
- realiza la misma
función que current
reset - mueve el puntero al primer
elemento de la tabla
end
- mueve el puntero al último
elemento de la tabla
next -
mueve el puntero al
elemento siquiente
prev - mueve el puntero al
elemento anterior
count -
devuelve el número de elementos de una tabla.
Veamos un ejemplo de las funciones anteriores:
<?php
$semana = array("lunes", "martes",
"miércoles", "jueves", "viernes",
"sábado", "domindo");
echo count($semana); //7
//situamos el puntero en el primer
elemento
reset($semana);
echo current($semana); //lunes
next($semana);
echo pos($semana); //martes
end($semana)
echo pos($semana); //domingo
prev($semana);
echo current($semana); //sábado
?>
Recorrer una tabla con las funciones anteriores
se hace un poco lioso, para ello se recomienda utilizar la función each().
<?php
$visitas = array("lunes"=>200,
"martes"=>186, "miércoles"=>190,
"jueves"=>175);
reset($visitas);
while (list($clave, $valor) = each($visitas))
{
echo "el día $clave ha tenido $valor visitas<BR>";
}
?>
La función
each()devuelve el
valor del elemento actual, en este caso, el valor del elemento actual y su
clave, y desplaza el puntero al siguiente, cuando
llega al final devuelve FALSO, y termina el bucle while().
Tablas multidimensionales
Las tablas multidimensionales son simplemente
tablas en las cuales cada elemento es a su vez otra tabla.
<?php
$calendario[] = array (1, "enero", 31);
$calendario[] = array (2, "febrero", 28);
$calendario[] = array (3, "marzo", 31);
$calendario[] = array (4, "abril", 30);
$calendario[] = array (5, "mayo", 31);
while (list($clave, $valor ) =
each($calendario)){
{
$cadena = $varlor[1];
$cadena .= " es el mes
número " . $valor[0];
$cadena .= "y tiene "
. $varlor[2] . " días<BR>";
echo $cadena;
}
?>
La función list()
es más bien un operador de asignación, lo que hace es asignar valores a
unas lista de variables. En este caso los valores son extraidos de una
tabla por la función each().
|