Tablas o Arrays en PHP

  • 01 de enero de 2001
  • Valoración:
  • 19 Comentarios
  • Manuales de PHP
Creación de tablas por medio de variables tipo array. Utilidad y funciones útiles relacionadas.
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.

Autor

Rubén Alvarez

Redactor de DesarrolloWeb.com

Comentarios

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??

Jose

14/4/2006
Y en que casos nos serviria mas el array?

Que es mas facil? con array o sin?

Gracias y Salu2

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.

Roberto

12/9/2007
Siempre consulto esta página porque es la mejor para los programadores en desarrollo, pero navegando me encuentro que esta página (http://www.matpec.com.ar/desde0/desde0-6-tablas-php.htm) está copiada textual de su artículo.
Lamentable, no?

Pablo Bozzolo [Beta Dir]

02/1/2008
Otra funcion interesante es natsort() que ordena de forma "natural" (en lugar de alfabetica) un array

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

02/7/2009
error de impresion
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

martin

16/9/2009
pregunta sobre las key de los array
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_jesus_pacheco_lopez

30/11/2009
no comprendo un parte del codigo
<?
$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.

Javi

18/3/2010
El uso del operador =>
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.

Javier

24/3/2010
hola respuesta a tu pregunta
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.

ALCON NEGRO

03/4/2010
.............TUTORIAL DE ARRAYS EN PHP.....
POR::::::::ALCON NEGRO;;;;

Omar

18/5/2010
Gracias
Agradezco por sus aportes a los que deseamos saber mas sobre desarrollo y poner a dispocision nuestra todo este valioso materia.

eddy

08/5/2011
ayuda porfis
soy un estudiante de cuarto curso del colegio
empece a ver php y necesito que me ayuden porfavor

ejercicio

4. Contruya un array con 10 nombres de estudiantes con notas entre uno y veinte, obtenga el nuevo array e imprima en orden descendente de menor a mayor tomando en cuenta la nota como índice de ordenamiento.

desarrollo

<?php
//ejercicio cuatro
$Notas=array("Lincango"=>"20","Lopez"=>"9","Herrera"=>"20","Gomez"=>"18","Hidalgo"=>"16","Naranjo"=>"14","Ortiz"=>"12","Utreras"=>"15","Solis"=>"7","Montenegro"=>"17","Freire"=>"2");
asort($Notas);
foreach($Notas as $Key=>$val){
echo "Estudiant[".$key."]=".$val."<br>;
}
?>


porfavor

gracias

zoomniac

15/6/2011
definicion de array
hola,
soy nuevo en php y me he encontrado con una definicion de array que tiene un formato:

$nombredecadena= array(
'campo:admin:settings' => 'Settings',
...
no entiendo que significa exactamente lo que está ocurriendo

cualquier ayuda será agradecida.

bryan

08/8/2011
Bryan Contreras
Muy Bien... los ejemplos estam bien explicados...
solo que dees decir por lo menos como mostrar los arrays en pantalla...
<?php
$config["server"]="localhost";
$config["user"]="root";
$config["pass"]="1234";
print_r($config);
?>

alfonso

23/9/2011
no puedo insertar mis reguistros en mi base de datos
hola una pregunta no puedo insertar mi mas reguistros ecepto uno cuando pongo el insert into en dentro de mi foreach aqui esta el codigo pues si alguine me puede ayudar mi correo es apr421@hotmail.com.. alguna respuesta porfis

foreach($canastaa as $k=> $v)
{
$rs_item=mysql_query("select idproducto,precio_sugerido from producto where idproducto='$k'");

if(!$rs_item)
echo "Error SQL:".mysql_error();
else

$item=mysql_fetch_array($rs_item);

$idproducto=$item[0];

$pv=$item[1];
$cantidad=$v;
$sub_total=$item[1]*$v;


$sqldetall_pedido="insert into detalle_pedido values('$idproducto','$pedidos','$pv','$cantidad','$sub_total')";
}
por ejemplo si trato de insertar 3 reguistros en mi base de datos solo se inseta el ultimo reguistro seleccionado para su ingreso en mi base de datos , no se laverda por que no me inserta todos los reguistros aver si me pueden ayudar gracias de antemano...

Leandro R.

08/9/2012
Ramon el codigo PHP ...
Ramon tu No ves el codigo php porque PHP es un lenguaje de programacion web, que se ejecuta en el Servidor web, y NO en tu PC. Es por eso que NO puedes verlo, porque el codigo php se ejecuta en el servidor y el Navegador web solo te muestra -El Resultado- :) . Por eso es que solo ves "peseta".

Pero tambien puedes descargar e instalar php a tu pc y ejecutar el codigo php desde tu pc(de forma local), sin tener un hosting web o un servidor.

No te paso el enlace de descarga porquue la verdad yo siempre he usado php en mi hosting gratuito.

Pero buscalo con Google.

saintseiyaomega

22/3/2014
arrays en php
Escribir un programa en Php donde almacene en un arreglo la palabra ?lenguaje? , se debe invertir la palabra y mostrar la palabra dentro del vector de manera invertida.

Compartir