dominios y alojamiento web en hostalia

Tablas o Arrays en PHP

01 de enero de 2001
Valoración del artículo:
Creación de tablas por medio de variables tipo array. Utilidad y funciones útiles relacionadas.
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Un tipo de variable que ya hemos descrito pero puede ser relativamente complicado a asimilar con respecto a la mayoría son los arrays. Un array es una variable que está compuesta de varios elementos cada uno de ellos catalogado dentro de ella misma por medio de una clave.

En el capítulos anteriores poníamos el ejemplo de un array llamado sentido que contenía los distintos sentidos del ser humano:

$sentido[1]="ver";
$sentido[2]="tocar";
$sentido[3]="oir";
$sentido[4]="gustar";
$sentido[5]="oler";

En este caso este array cataloga sus elementos, comunmente llamados valores, por números. Los números del 1 al 5 son por lo tanto las claves y los sentidos son los valores asociados. Nada nos impide emplear nombres (cadenas) para clasificarlos. Lo único que deberemos hacer es entrecomillarlos:

<?
$moneda["espana"]="Peseta";
$moneda["francia"]="Franco";
$moneda["usa"]="Dolar";
?>

Otra forma de definir idénticamente este mismo array y que nos puede ayudar para la creación de arrays más complejos es la siguiente sintaxis:

<?
$moneda=array("espana"=> "Peseta","francia" => "Franco","usa" => "Dolar");
?>

Una forma muy practica de almacenar datos es mediante la creación de arrays multidimensionales (tablas). Pongamos el ejemplo siguiente: Queremos almacenar dentro de una misma tabla el nombre, moneda y lengua hablada en cada país. Para hacerlo podemos emplear un array llamado país que vendrá definido por estas tres características (claves). Para crearlo, deberíamos escribir una expresión del mismo tipo que la vista anteriormente en la que meteremos una array dentro del otro. Este proceso de incluir una instruccion dentro de otra se llama anidar y es muy corriente en programación:

<?
$pais=array
(
"espana" =>array
   (
   "nombre"=>"España",
   "lengua"=>"Castellano",
   "moneda"=>"Peseta"
   ),
"francia" =>array
   (
   "nombre"=>"Francia",
   "lengua"=>"Francés",
   "moneda"=>"Franco"
   )
);
echo $pais["espana"]["moneda"] //Saca en pantalla: "Peseta"
?>

Ejecutar script

Antes de entrar en el detalle de este pequeño script, comentemos algunos puntos referentes a la sintaxis. Como puede verse, en esta secuencia de script, no hemos introducido punto y coma ";" al final de cada línea. Esto es simplemente debido a que lo que hemos escrito puede ser considerado como una sola instrucción. En realidad, somos nosotros quienes decidimos cortarla en varias líneas para, así, facilitar su lectura. La verdadera instrucción acabaría una vez definido completamente el array y es precisamente ahí donde hemos colocado el único punto y coma. Por otra parte, podéis observar cómo hemos jugado con el tabulador para separar unas líneas más que otras del principio. Esto también lo hacemos por cuestiones de claridad, ya que nos permite ver qué partes del código están incluidas dentro de otras. Es importante acostumbrarse a escribir de esta forma del mismo modo que a introducir los comentarios ya que la claridad de los scripts es fundamental a la hora de depurarlos. Un poco de esfuerzo a la hora de crearlos puede ahorrarnos muchas horas a la hora de corregirlos o modificarlos meses más tarde.

Pasando ya al comentario del programa, como podéis ver, éste nos permite almacenar tablas y, a partir de una simple petición, visualizarlas un determinado valor en pantalla.

Lo que es interesante es que la utilidad de los arrays no acaba aquí, sino que también podemos utilizar toda una serie de funciones creadas para ordenarlos por orden alfabético directo o inverso, por claves, contar el numero de elementos que componen el array además de poder movernos por dentro de él hacia delante o atrás.

Muchas son las funciones propuestas por PHP para el tratamiento de arrays, no vamos a entrar aquí en una descripción de las mismas. Sólo incluiremos esta pequeña tabla que puede ser complementada, si necesario, con la documentación que ya hemos mencionado.

Función Descripción
array_values (mi_array) Lista los valores contenidos en mi_array
asort(mi_array) y arsort(mi_array) Ordena por orden alfabético directo o inverso en función de los valores
count(mi_array) Nos da el numero de elementos de nuestro array
ksort(mi_array) y krsort(mi_array) Ordena por orden alfabético directo o inverso en función de las claves
list ($variable1, $variable2...)=mi_array Asigna cada una variable a cada uno de los valores del array
next(mi_array), prev(mi_array), reset(mi_array) y end(mi_array) Nos permiten movernos por dentro del array con un puntero hacia delante, atras y al principio y al final.
each(mi_array) Nos da el valor y la clave del elemento en el que nos encontramos y mueve al puntero al siguiente elemento.

De gran utilidad es también el bucle foreach que recorre de forma secuencial el array de principio a fin.

Para complementar esta información resultará de gran interés el artículo Trabajo con tablas o arrays en PHP y para los que prefieran la formación en vídeo, recomendamos ver los videotutoriales sobre los arrays en PHP.

Compartir en redes sociales

Comentarios
Fueron enviados 17 comentarios al artículo
7 comentarios no revisados
10 comentarios revisados:
Por: marco mejia
10/11/2004
Buen Día mi pregunta es la siguiente:
EN LOS ARRAYS SOLO EXISTE UNA COORDENADA, PÒRQUE MI SUPOSICION ES QUE ES UNA MATRIZ O UNA TABLA DE UNA SOLA COLUMNA, QUE SUCEDE CON LAS DEMAS COLUMNAS??
Por: Jose
14/4/2006
Y en que casos nos serviria mas el array?

Que es mas facil? con array o sin?

Gracias y Salu2
Por: Ramon
20/5/2007
Seria muy util que los scripts lss escribieran asi como dicen hacerlo en la pagina, he visto el codigo fuente del script y todo lo que hacen es escribir peseta en codigo html.
Corrijame si estoy mal. Gracias.
Por: Pablo Bozzolo [Beta Dir]
02/1/2008
Otra funcion interesante es natsort() que ordena de forma "natural" (en lugar de alfabetica) un array
Por: elizabeth
30/11/2008
tengo una pregunta acerca de la sintaxis...


..en el segundo ejemplo se podria tambien definir el array de esta manera o no?


<?
$moneda=array(1=> "Peseta",2 => "Franco",3 => "Dolar");
?>

no estoy segura acerca de la sintaxis....por eso pregunto..


gracias!




ninat
error de impresion
02/7/2009
Hoal,buenas tardes tengo que deciros que es muy bueno el temario pero hay dos errores graves de impresion en las paginas 23 y 28 de momento no he visto mas
gracias
pregunta sobre las key de los array
Por: martin
16/9/2009
Buenas, mi consulta es la siguiente. Yo estoy generando dinamicamente el nombre de mi input type="text" el cual uso después como key cuando envío el método POST (no sé si estoy siendo claro, me cuesta un poco expresar lo que tengo en la cabeza), El problema es que los nombres que yo pongo tienen punto porque son dominios (por ej: pepito.org) y cuando php lo usa como key del array del POST me transforma todos los puntos a _ (guión bajo) con los cual lo anterior me queda (pepito_org) y no me sirve para hacer una actualización con la base de datos. Mi pregunta es si hay alguna manera de poder mantener los puntos para así poder hacer la actualización correctamente. Muchas gracias

jose_de...
no comprendo un parte del codigo
30/11/2009
<?
$pais=array
(
"espana" =>array
(
"nombre"=>"España",
"lengua"=>"Castellano",
"moneda"=>"Peseta"
),
"francia" =>array
(
"nombre"=>"Francia",
"lengua"=>"Francés",
"moneda"=>"Franco"
)
);
echo $pais["espana"]["moneda"] //Saca en pantalla:
"Peseta"

que funcion esta realizando el => ("nombre"=>"España",)
mandan impresion a pantalla con echo $pais (de hecho no se si diga impresion a pantalla, si no se dice asi me avisan, lo que pasa es que es la costumbre printf de c++ jejeje), bueno a lo que vamos no comprendo que es lo que realiza el => por lo cual no se como es que se llego a imprimir en patlla peseta.

podria ser una pregunta algo tonta, pero es que es mi primer contacto en php, espero poder aprender aqui.

de ante manos les agradesco los tutoriales, y espero que con los conocimientos de c++ me sea mas facil aprender php con ayuda de ustedes.
El uso del operador =>
Por: Javi
18/3/2010
Hola Jose_de... El uso del operador => es para asignar los valores del array directamente, en vez de asignarlos uno a uno, asi, con una misma instruccion, inicializamos todos los valores, sin tener que ir repitiendo por ejemplo:

array["España"]["Moneda"]="peseta";
array["Francia"]["Moneda"]="Franco";
etc....

que es mucho mas trabajoso.
Espero que te haya servido.
Un saludo a tod@s.
hola respuesta a tu pregunta
Por: Javier
24/3/2010
Cuando vemos ("nombre"=>"España") en codigo PHP quiere decir que el valor de "España" se esta asignandose a la variable "nombre" mas o menos es sinonimo de igual, con respecto a printf que se utiliza en c++ sabemos que en PHP para que nos muestre en pantalla escribimos echo que es un eco o reflejo que queremos de algo que queremos que se muestre en pantalla,cada lenguaje tiene su propio lenguaje a la cual entiende ok, bye cuidate pupilo.

Manuales relacionados
Categorias relacionadas
El autor
Rubén Alvarez
Redactor de DesarrolloWeb.com
http://www.desarrolloweb.com
Lectura recomendada
Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...