$t= creaArray(4, 6); echo array_to_table($t); function creaArray($ancho, $alto) { for ($i = 0; $i < $alto; $i++) { for ($j = 0; $j < $ancho; $j++) { $c[$i][$j] = $j + $i * $ancho; } } return $c; } function cuadrado_magico($ancho){ if ($ancho%2==0) $ancho--; $posy=0; $posx=floor($ancho/2); $cont=1; while ($cont<=$ancho**2){ if (empty($c[$posy][$posx])){ $c[$posy][$posx]=$cont++; $posx=($posx+1)%$ancho; $posy=($posy-1+$ancho)%$ancho; } else{ $posx=($posx-1+$ancho)%$ancho; $posy=($posy+2)%$ancho; } } return $c; } $c= cuadrado_magico(3); echo array_to_table($c); $c= cuadrado_magico(5); echo array_to_table($c);