|
Arreglos
(tablas o vectores)
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[] = "México";
$ciudad[] = "Roma";
$ciudad[] = "Sevilla";
$ciudad[] = "Londres";
print ("yo vivo en " . $ciudad[1] . "<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
índice 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("codigo">$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 sitúa 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 siguiente
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",
"domingo");
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 enredoso,
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().
Arreglos 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 = $valor[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 extraídos de una tabla
por la función each().
|