Ver índice
Arrays bidimensionales

        Ocultar índice  

   Índice de contenidos
   Instalación en Windows
   Instalación en Ubuntu
   Servidores seguros
   Páginas dinámicas
   Sintaxis básica
   Operaciones
   Arrays
   Formatos de presentación
   Operadores
   Bucles
   Extraer y ord. información
   Funciones
   Ficheros externos
   Imágenes dinámicas
   Gestión de directorios
   Cookies y sesiones
   Clases y objetos
   Ficheros en formato PDF
   Bases de datos MySQL
   PHP y XML
   PDO - Bases SQLite / MySQL
   MySQL a traves de misqli
   Algo de JavaScript y AJAX


Arrays bidimensionales

Los arrays bidimensionales pueden entenderse como algo bastante similar a una tabla de doble entrada. Cada uno de los elementos se identifica –sigue siendo válido el nombre único que se usaba en los unidimensionales– por un nombre ($nombre) seguido de dos ([ ]) que contienen los índices (en este caso son dos índices) del array.

Los índices pueden ser de tipo escalar -equivalen al número de fila y columna que la celda ocupa en la tablaasociativos lo que equivaldría en alguna medida a usar como índices los nombres de la fila y de la columna y también mixtos (uno de los índices es escalar y el otro asociativo).

  ¡Cuidado!  

No dejes de tener en cuenta lo que hemos advertido al hablar de arrays unidimensionales.

En este supuesto, también, se empiezan a numerar los arrays escalares a partir de CERO.

Arrays bidimensionales escalares

Los elementos de un array bidimensional escalar pueden escribirse usando una de estas sintaxis:

$a[ ][ ]=valor    o    $a[xx][ ]=valor    o     $a[ ][xx]=valor     o también     $a[xx][yy]=valor

En el primero de los casos PHP asigna automáticamente como primer índice el valor que sigue al último de los asignado a ese mismo índice y, si es el primero que se define, le pondrá como índice 0 (CERO). Sea cual fuere el valor de primer índice al segundo se le asignará cero ya que es en este mismo momento cuando se habrá creado el primero y, por tanto, aún carecerá de elementos.

En el segundo de los casos, asignamos un valor al primer índice (xx) y será el segundo quien se incremente en una unidad respecto al de valor más alto de todos aquellos cuyo primer índice coincide con el especificado.

La tercera opción es bastante similar a la anterior. Ahora se modificaría automáticamente el primer índice y se escribiría el contenido (xx) como valor del segundo.

En la cuarta de las opciones se asignan libremente cada uno de los índices (xx e yy) poniéndoles valores numéricos.

Este es un ejemplo de uso de array bidimensionales escalares.

<?php 
#  rellenamos el array desde [0][0] hasta [0][4]
# la insercion automatica haria que este primero fuera [0][0]

$a[][]=" ";
# ahora pondremos cero como indice del primer array y dejemos que PHP
# nos vaya insertando automaticamente el segundo

$a[0][]="3-2";$a[0][]="5-3";$a[0][]="7-1";$a[0][]="0-2";

#ahora desde [1][0] hasta [1][4]
#este primero lo dejamos como automático en ambos indices
# de esta forma el primero tomará valor uno (siguiente al anterior)
# de forma automática
$a[][]="0-11";
# repetimos el proceso anterior
$a[1][]=" ";$a[1][]="2-1";$a[1][]="1-0";$a[1][]="1-2";
# y repetimos de nuevo, ahora crearia 2 como primer indice
$a[][]="0-0";
#insertariamos los restantes valores de indice 2
$a[2][]="1-3";$a[2][]=" ";$a[2][]="1-4";$a[2][]="2-0";
# nuevo incremento del primer indice
$a[][]="1-0";
# rellenamos
$a[3][]="6-3";$a[3][]="14-3 ";$a[3][]=" ";$a[3][]="1-0";
# nuevo y ultimo incremento de primer indice
$a[][]="1-1";
# rellenamos de nuevo
$a[4][]="2-3";$a[4][]="0-1 ";$a[4][]="1-1";$a[4][]="";

# como verás el proceso no tiene complicaciones, pero ... pesadillo si es
# ¿verdad que si tuviéramos una base de datos sería más fácil?
# estamos en ello, todo se andará...

# tendríamos que ver esos valores pero.. escribir "a mano"
# una tabla puede ser una tortura, así que mejor introducimos
# una bucle, otro recurso que estudiaremos pronto
# para esa labor repetitiva de mostrar en una tabla
# todos los datos del array

# Sería algo como esto
# creamos la etiqueta de apertura de una tabla

print ("<TABLE BORDER=2>");
# ahora dos bucles anidados (rojo uno, magenta el otro)
# para rellenar las celdas de cada fila (el magenta)
# y para insertar las etiquetas <TR> utilizaremos el rojo
# antepondremos el @ a print para evitar mensaje de error
for ($i=0;$i<5;$i++){
	print("<tr>");
	 for($j=0;$j<5;$j++) {
			@print("<td>".$a[$i][$j]."</td>");
	 }
}

#ponemos la etiqueta de cierre de la tabla

print("</table>");
?>
ejemplo37.php

Utilizando el script anterior, con ligeros retoques estéticos, hemos construido esta tabla:

Todos los resultados de la liguilla
Indice 0 1 2 3 4
0   3-2 5-3 7-1 0-2
1 0-11   2-1 1-0 1-2
2 0-0 1-3   1-4 2-0
3 1-0 6-3 14-3   1-0
4 1-1 2-3 0-1 1-1  


Arrays bidimensionales asociativos

Los elementos de un array asociativo bidimiensional se pueden escribir usando la siguiente sintaxis:

$a["indice1"]["indice2"]=valor

En este caso, los índices serán cadenas y se escribirán entre comillas.

Como ejemplo de array bidimensional emplearemos una tabla de resultados de una liga de fútbol en la que intervienen cinco equipos que –como en toda liga que se precie– se juega a doble partido.

Resultados de la liguilla
Indice Juvencia Mosconia Canicas Condal Piloñesa
Juvencia   3-2 5-3 7-1 0-2
Mosconia 0-11   2-1 1-0 1-2
Canicas 0-0 1-3   1-4 2-0
Condal 1-0 6-3 14-3   1-0
Piloñesa 1-1 2-3 0-1 1-1