Comunidad de diseño web y desarrollo en internet online

recuperar datos array bidimensional PHP

Citar            
MensajeEscrito el 01 Dic 2012 06:28 pm
Buenas tardes,
antes que nada, agradecer ya desde ahora la atención prestada.
Tengo entre manos un ejercicio sobre PHP y tablas bidimensionales que no consigo resolver. Dispongo de una función que recupera de un archivo externo una serie de valores mediante la función include y los convierte en una tabla bidimensional, retornándola para poderla emplear en otras funciones.
Lo que no consigo hacer es implementar una función que me permita imprimir los datos contenidos en la misma.
El código del que dispongo es el siguiente:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//ES"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="ES" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Practica2_Exer2 Color Board</title>
</head>
<body bgcolor="grey">
<h3>Color Board</h3>
<h3>Jaume Villarreal Quintana</h3>
<div>
<?php

Código :

[code][code][code][php]/*************FUNCTION PLANTILLA ****************/
   function getData()
   {   //get board data File & returns bidimensional data Array

      $filename = $_GET["filename"];
      include($filename);
      $data = explode(" ", $cadena);
      $high = array_shift($data);
      $width = array_shift($data);
      
      for($i=0; $i<$high; $i++)
         for($j=0; $j<$width; $j++)
            $b[$i][$j] = array_shift($data);
      return ($b);
   }// de getData
   
   function LF()
   { //line feed
      print "<br />";
   }
/******************FUNCTIONS*********************/
   
   //funciones;

   
/******************MAIN*********************/
    
   $board = getData();  //$board es el tablero cargado

   printBoard($board);
   LF();
   $out = transposeBoard($board);
   printBoard($out);
   LF();
   $out = colorChange($board, 'R', 'Y');
   printBoard($out);
   LF();
   $out = colorChange($board, 'B', 'G');
   printBoard($out);
   LF();
   $out = negative($board);
   printBoard($out);
   LF();
   $out = aleatory($board);
   printBoard($out);
   
?>
</div>
</body>
</html>[/php][/code][/code][/code]

Como se puede observar, la función getData() recoge los datos y los convierte en una tabla bidimensional. En el main esta función es recogida por la variable

Código PHP :

$board
, que nos permitirá trabajar con los datos retornados.
La función debe recoger los datos de la tabla para mostrar en pantalla una tabla de alto y ancho correspondiente que tenga en cada celda una imagen. Para poder imprimir los datos de

Código PHP :

$board
en un formato de tabla, establezco la siguiente función:

Código PHP :

function HEAD(){
   print '<p><table>';
   }

   function FEET(){
   print '</table></p>';
   }
   
   function printBoard($tabla){
   HEAD();
   for ($i; $i<count($tabla); $i++){
      print '<tr>';
      for ($j; $j<count($tabla[$i]); $j++){
         print "<td>";
         if(tabla[$i][$j]=='Y'){
         print "<img src=\"Y.png\" />"."</td>";
         }
         elseif($tabla[$i][$j]=='R'){
         print "<img src=\"R.png\" />";
         }
         elseif($tabla[$i][$j]=='G'){
         print "<img src=\"G.png\" />";
         }
         elseif($tabla[$i][$j]=='B'){
         print "<img src=\"B.png\" />";
         }
         print "</td>";
      }
      print '</tr>';
      $j=0;
      }
   FEET();
        }
        
        printBoard($board);


Como se puede observar, la función printBoard recibe un parámetro ($tabla) y se establecen dos bucles con FOR. El problema es que no imprime nada. Si alguien puede echarme una mano estaría extremadamente agradecido.

Por digid

15 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 Dic 2012 06:29 pm

digid escribió:

Buenas tardes,
antes que nada, agradecer ya desde ahora la atención prestada.
Tengo entre manos un ejercicio sobre PHP y tablas bidimensionales que no consigo resolver. Dispongo de una función que recupera de un archivo externo una serie de valores mediante la función include y los convierte en una tabla bidimensional, retornándola para poderla emplear en otras funciones.
Lo que no consigo hacer es implementar una función que me permita imprimir los datos contenidos en la misma.
El código del que dispongo es el siguiente:

Código :

[code][code][code][php]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//ES"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="ES" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Practica2_Exer2 Color Board</title>
</head>
<body bgcolor="grey">
<h3>Color Board</h3>
<h3>usuario</h3>
<div>
<?php
/*************FUNCTION PLANTILLA ****************/
   function getData()
   {   //get board data File & returns bidimensional data Array

      $filename = $_GET["filename"];
      include($filename);
      $data = explode(" ", $cadena);
      $high = array_shift($data);
      $width = array_shift($data);
      
      for($i=0; $i<$high; $i++)
         for($j=0; $j<$width; $j++)
            $b[$i][$j] = array_shift($data);
      return ($b);
   }// de getData
   
   function LF()
   { //line feed
      print "<br />";
   }
/******************FUNCTIONS*********************/
   
   //funciones;

   
/******************MAIN*********************/
    
   $board = getData();  //$board es el tablero cargado

   printBoard($board);
   LF();
   $out = transposeBoard($board);
   printBoard($out);
   LF();
   $out = colorChange($board, 'R', 'Y');
   printBoard($out);
   LF();
   $out = colorChange($board, 'B', 'G');
   printBoard($out);
   LF();
   $out = negative($board);
   printBoard($out);
   LF();
   $out = aleatory($board);
   printBoard($out);
   
?>
</div>
</body>
</html>[/php][/code][/code][/code]

Como se puede observar, la función getData() recoge los datos y los convierte en una tabla bidimensional. En el main esta función es recogida por la variable

Código PHP :

$board
, que nos permitirá trabajar con los datos retornados.
La función debe recoger los datos de la tabla para mostrar en pantalla una tabla de alto y ancho correspondiente que tenga en cada celda una imagen. Para poder imprimir los datos de

Código PHP :

$board
en un formato de tabla, establezco la siguiente función:

Código PHP :

function HEAD(){
   print '<p><table>';
   }

   function FEET(){
   print '</table></p>';
   }
   
   function printBoard($tabla){
   HEAD();
   for ($i; $i<count($tabla); $i++){
      print '<tr>';
      for ($j; $j<count($tabla[$i]); $j++){
         print "<td>";
         if(tabla[$i][$j]=='Y'){
         print "<img src=\"Y.png\" />"."</td>";
         }
         elseif($tabla[$i][$j]=='R'){
         print "<img src=\"R.png\" />";
         }
         elseif($tabla[$i][$j]=='G'){
         print "<img src=\"G.png\" />";
         }
         elseif($tabla[$i][$j]=='B'){
         print "<img src=\"B.png\" />";
         }
         print "</td>";
      }
      print '</tr>';
      $j=0;
      }
   FEET();
        }
        
        printBoard($board);


Como se puede observar, la función printBoard recibe un parámetro ($tabla) y se establecen dos bucles con FOR. El problema es que no imprime nada. Si alguien puede echarme una mano estaría extremadamente agradecido.

Por digid

15 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Dic 2012 02:02 pm
Ejecuta:

Código PHP :

echo "<pre>";
var_dump($borad);
echo "</pre>";

inmediatamente después de ejecutar getData() y dinos qué ves. Me da la impresión de que no tienes ningún dato en $board.
A propósito, un array bidimensional NO ES una tabla.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 03 Dic 2012 12:27 am
Muchas gracias por la respuesta y la puntualización sobre array y tabla. Ahora ya funciona, efectivamente la variable no recibía ningún valor. Solucionado. ¡Muchas gracias!

Por digid

15 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.