Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con return

Estas en el tema de Problema con return en el foro de PHP en Foros del Web. Hola a todos , el caso es que estoy haciendo unas funciones, però tengo algunos problemas con los datos que me deberia devolver la funcion. ...
  #1 (permalink)  
Antiguo 19/05/2013, 12:48
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 12 años
Puntos: 0
Problema con return

Hola a todos ,

el caso es que estoy haciendo unas funciones, però tengo algunos problemas con los datos que me deberia devolver la funcion.

por si sola la funcion he comprobado que funciona pero cuando la quiero utilizar en otra funcion me indica que la variable teoricamente assignada al return no està definida.

pego el codigo a ver si me podeis iluminar un poquito:

Código PHP:
<?php
       
    
/************* FUNCTION *************/
    
    
function LF()
    { 
//line feed
        
print "<br />";
    }
    function 
createBoard(&$row,&$col){
    
    for(
$j=0;$j<$row;$j++){
    
        for (
$i=0;$i<$col+1;$i++){
        
                
$row2[$i]=rand(0,6);
                                        
        }
        
$board[]=$row2;            
        }
        return(
$board);            

    }
        
    function 
putLine($i){
    
    
$board=createBoard($row,$col);
    
$data=$board[$i];
    
$l=count($data);
        for (
$j=0;$j<$l;$j++){
    
        echo 
$data[$j];
    
    }
        
    }
    
    
    
//Aquí va el codi de les funcions
    

    /************* MAIN *************/
    //Aquí va el codi del programa principal    
    
    
$row $_GET["row"];
    
$col $_GET["col"];
    
    

    

    
    

    
    
        
?>
Gràcias de antemano
  #2 (permalink)  
Antiguo 19/05/2013, 12:57
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 6 meses
Puntos: 331
Respuesta: Problema con return

Qué error te da? Cómo llamas a las funciones? Cuál es el resultado esperado? Etc...
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 19/05/2013, 13:00
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con return

me sale


Notice: Undefined variable: board in C:\xampp\htdocs\probes\probes5\p1.php on line 33

se presupone que la funcion putLine deberia imprimir en pantalla una array(fila) de todo el array en este caso board llamandola

Código PHP:
<?PHP

$row 
$_GET["row"];
$col $_GET["col"]; 

putLine(3);

?>
los datos los cojo por a URL con GET
  #4 (permalink)  
Antiguo 19/05/2013, 15:04
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con return

este es un ejemplo de que la funcion createBoard funciona pero al ponerla en otra funcion no .

Código PHP:
<?php
       
    
/************* FUNCTION *************/
    
    
function LF()
    { 
//line feed
        
print "<br />";
    }
    function 
createBoard(&$row,&$col){
    
    for(
$j=0;$j<$row;$j++){
    
        for (
$i=0;$i<$col+1;$i++){
        
                
$row2[$i]=rand(0,6);
                                        
        }
        
$board[]=$row2;    
                
        }
        return 
$board;            

    }
        
    function 
putLine($i){
    
    
$board=createBoard($row,$col);
    
$data=$board[$i];
    
$l=count($data);
        for (
$j=0;$j<$l;$j++){
    
        echo 
$data[$j];
    
    }
        
    }
    
    
    
//Aquí va el codi de les funcions
    

    /************* MAIN *************/
    //Aquí va el codi del programa principal    
    
    
$row $_GET["row"];
    
$col $_GET["col"];

    
$hola=createBoard($row,$col);
    
print_r($hola);
    
putLine(3);

    

    

    
    

    
    
        
?>
  #5 (permalink)  
Antiguo 19/05/2013, 15:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con return

Te explico:
Código PHP:
Ver original
  1. function createBoard(&$row,&$col){
  2.    
  3.     for($j=0;$j<$row;$j++){
  4.    
  5.         for ($i=0;$i<$col+1;$i++){
  6.        
  7.                 $row2[$i]=rand(0,6);
  8.                                        
  9.         }
  10.         $board[]=$row2;            
  11.         }
  12.         return($board);            
  13.  
  14.     }

Aquí hay un error grave, si $row es mayor o igual que cero jamás se van a ejecutar los for(), lo mismo pasa con $col así que $board no necesariamente existe todo el tiempo.

Sólo existe cuando se ejecutan ambos ciclos, pero de por si está mal escrita la función pues no contempla dichos inconvenientes lógicos, de ahí el error.

Obvio, si los ciclos no se ejecutan entonces $board no se define, por ende no existe, y de ahí el mensaje de error de que no está definida.

¿Se entiende?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 20/05/2013, 08:18
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con return

supongo que te refieres a que si row és igual o menor que cero, si no no lo termino de entender , los valores que van a tener tanto row como col son enteros positivos siempre.

Seguramente es que se me escapa algo he probado muchos numeros enteros positivos i la array siempre me la imprime correctamente ($board) per no puedo uytilizarla en la otra funcion.


gracias
  #7 (permalink)  
Antiguo 20/05/2013, 08:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con return

Eso es a lo que me refiero, las veces que estás usando la función y te da error es porque los for() dentro de createBoard() jamás se ejecutan, eso es todo.

Justamente donde hace esto:
Código PHP:
Ver original
  1. $row = $_GET["row"];
  2. $col = $_GET["col"];
  3.  
  4. putLine(3);

No invocas createBoard() y jamás $row ni $col estarán al alcance dentro de la función putLine() como indicas aquí:
Código PHP:
Ver original
  1. function putLine($i){
  2.    
  3.     $board=createBoard($row,$col);
  4.     $data=$board[$i];
  5.     $l=count($data);
  6.         for ($j=0;$j<$l;$j++){
  7.    
  8.         echo $data[$j];
  9.    
  10.     }

Aunque ahí si usas createBoard() las variables $row ni $col existen dentro de ese contexto.

En resumen tienes bastantes errores lógicos y de contexto, ¿alguna ves has escrito funciones propias?

Porque eso es lo que te sucede, las funciones están mal planteadas y escritas, no más.

Deberías seguir estudiando al respecto, consulta el manual.

http://php.net/manual/en/functions.user-defined.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 20/05/2013, 10:52
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con return

perdona las molestias ya està solucionado, row i col estaban bien , però me has ayudado , simplemetne era poner el row i el col i en la funcion putLine i pista , ahora funciona perfectamente

gràcias!

Etiquetas: return
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:54.