Arrays multidimensionales

Los arrays que hemos visto hasta ahora son unidimensionales. Para crear una matriz multidimensional en PHP lo único que deberemos tener en cuenta es que en realidad estaremos definiendo un array de arrays. Es decir, podemos pasarle como parámetros a la función _array_ otros arrays creadas con esa misma función. Esto mismo lo podemos ver en el siguiente ejemplo, donde hemos añadido más información a cada uno de los productos de la panadería. En concreto, para cada producto hemos almacenado un código de tres letras, su nombre y su precio:

$productos = array(
array('BAR', 'Barras', 1),
array('ENS', 'Ensaimadas', 3),
array('NAP', 'Napolitanas',2)
);

Para acceder a un elemento cualquiera del array anterior usamos índices numéricos. Por ejemplo, para acceder al nombre (segundo campo, índice 1) del tercer producto (tercera posición en el array, índice 2), teclearíamos lo siguiente:

$productos[2][1]

Para recorrer todos los elementos de la matriz, en esta ocasión, es necesaria la presencia de dos bucles _for _ anidados. Con el bucle exterior recorreríamos todas las filas. Por cada fila, con el bucle interno iríamos recorriendo todos sus elementos (tantos como columnas haya):

for ($fila=0; $fila<count($productos); $fila++) {
   for ($col=0; $col<count($productos[$fila]); $col++)
      echo ' | ' . $productos[$fila][$columna];
   echo '<br />';
}

Por supuesto también sería posible disponer de una matriz multidimensional indexada asociativamente, como la del siguiente ejemplo:

$productos = array (
   array ( 'Codigo' => 'BAR',
      'Descripcion' => 'Barras',
      'Valor' => 1),
   array ( 'Codigo' => 'ENS',
      'Descripcion' => 'Ensaimadas',
      'Valor' => 3),
   array ( 'Codigo' => 'NAP',
      'Descripcion' => 'Napolitanas',
      'Valor' => 2)
);

En este caso, accederemos a un elemento cualquier utilizando los índices correspondientes. Por ejemplo, para acceder al código de las barras, usaremos:

$productos[0]['Codigo']

Podemos recorrer todos los elementos del array anterior utilizando el siguiente bucle (que podríamos haber combinado con el uso de las funciones _each _ o _list_ ):

for ($fila=0; $fila<3; $fila++)
{
   echo ' | ' .
   $productos[$fila]['Codigo'] . ' | ' .
   $productos[$fila]['Descripcion'] . ' | ' .
   $productos[$fila]['Valor'] . '<br />';
}

results matching ""

    No results matching ""