En PHP los arrays multidimensionales se crean con arrays dentro de arrays:
function muestraTabla($tabla) { echo "<pre>"; print_r($tabla); echo "</pre>"; } $m=array( array(1,2), array(3,4), ); muestraTabla($m); for($i=0;$i<count($m);$i++){ for ($j=0;$j<count($m[$i]);$j++){ echo $m[$i][$j]."<br/>"; } } foreach ($m as $n){ foreach ($n as $el){ echo $el."<br/>"; } }
Podemos tener las dimensiones que queramos:
$m = array( array( array(0, 1), array(2, 3) ), array( array(4, 5), array(6, 7) ), array( array(8, 9), array(10, 11) ), ); muestraTabla($m); for ($i = 0; $i < count($m); $i++) { for ($j = 0; $j < count($m[$i]); $j++) { for ($k = 0; $k < count($m[$i][$j]); $k++) { echo $m[$i][$j][$k] . "<br/>"; } } } foreach ($m as $n) { foreach ($n as $el) { foreach ($el as $e) { echo $e . "<br/>"; } } }
Lo mismo que usamos para recorrer lo podemos usar para generar:
for ($i = 0; $i < 10; $i++) { for ($j = 0; $j < 10; $j++) { $m[$i][$j]=$j+$i*10; } } muestraTabla($m);
Un array puede ser cualquier combinación de valores, asociativos, arrays dentro de arrays dentro de arrays….
$tablaLoca = array( "juan", "pepe" => array(1, 2, 3), array( array("a","b"), "w" ), 5, "ppp"=>array( "q"=>3, "w"=>array(1,2,array(7,8)) ) ); muestraTabla($tablaLoca);
Si quisiéramos acceder a los valores de una tabla como la anterior necesitaríamos una función recursiva:
function valores($var){ $res=""; if (is_array($var)){ foreach($var as $v){ $res.=valores($v); } } else{ $res=$var.","; } return $res; } echo valores($tablaLoca);