Í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 AJAXArrays 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 tabla– asociativos 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).
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]=valorEn 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>"); ?>
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"]=valorEn 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 | |