Arreglos multidimensionales en PHP

En los capítulos anteriores de este tutorial, ya sabemos que un array es una lista simple de pares de número/valor.

Sin embargo, a veces deseas almacenar valores con una clave superior a una.

Se puede almacenar usando arrays multidimensionales.

PHP - Array Multidimensional

Un array multidimensional es un array que contiene uno o más arrays.

PHP puede entender arrays bidimensionales, tridimensionales, cuádruples, quintos e incluso más niveles de profundidad. Sin embargo, los arrays con más de tres niveles de profundidad son difíciles de gestionar para la mayoría de las personas.

Nota:La dimensión del array indica el número de índices que necesitas para seleccionar un elemento.

  • Para un array bidimensional, necesitas dos índices para seleccionar un elemento
  • Para un array tridimensional, necesitas tres índices para seleccionar un elemento

PHP - Array Bidimensional

Un array bidimensional es un array de arrays (un array tridimensional es un array de arrays de arrays).

Primero, veamos la siguiente tabla:

Marca Inventario Ventas
Volvo 33 20
BMW 17 15
Saab 5 2
Land Rover 15 11

Podemos almacenar los datos de la tabla superior en un array bidimensional, como así:

$cars = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

Ahora este array bidimensional contiene cuatro arrays y tiene dos índices (subíndices): fila y columna.

Para acceder a los elementos del array $cars, debemos usar dos índices (fila y columna):

Ejemplo

<?php
echo $cars[0][0].": Existencia:".$cars[0][1].", Venta:".$cars[0][2].".<br>";
echo $cars[1][0].": Existencia:".$cars[1][1].", Venta:".$cars[1][2].".<br>";
echo $cars[2][0].": Existencia:".$cars[2][1].", Venta:".$cars[2][2].".<br>";
echo $cars[3][0].": Existencia:".$cars[3][1].", Venta:".$cars[3][2].".<br>";
?>

Ejemplo en ejecución

También podemos usar otro bucle for dentro de un bucle for para obtener elementos del array $cars (aún necesitamos usar dos índices):

Ejemplo

<?php
for ($row = 0; $row < 4; $row++) {
  echo "<p><b>Número de fila $row</b></p>";
  echo "<ul>";
  for ($col = 0; $col < 3; $col++) {
    echo "<li>".$cars[$row][$col]."</li>";
  }
  echo "</ul>";
}
?>

Ejemplo en ejecución