Foros del Web » Programando para Internet » PHP »

Problema declarando una funcion

Estas en el tema de Problema declarando una funcion en el foro de PHP en Foros del Web. holas gentes, les muestro mas o menos cual es la idea y me dicen por que puede ser que no ande. Código PHP: $numero0 =  ...
  #1 (permalink)  
Antiguo 30/12/2004, 08:48
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 20 años, 7 meses
Puntos: 4
Problema declarando una funcion

holas gentes, les muestro mas o menos cual es la idea y me dicen por que puede ser que no ande.

Código PHP:
$numero0rand(0,9);
$numero1rand(0,9);
$numero2rand(0,9);
$numero3rand(0,9);

$clue"$numero0 - $numero1 - $numero2 - $numero3 ";

$numexplode('-',$clue);
function 
cambiar($valor) {
    if(
$valor =='0'){
     
$valor "1";
    }
    }
                        
echo 
cambiar($num[0]); 
bueno, la verdad que no se que hago mal, y como estoy sin dormir puede que este muy burro pa darme cuenta.

saludos
__________________
w32.oktubre@mm <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.
  #2 (permalink)  
Antiguo 30/12/2004, 09:28
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Bueno, el problema es que PHP no sabe que devuelve tu funcion. Mejor dicho, le has dicho que no devuelve nada. Para que tu funcion devuelva un valor debes usar return (www.php.net/return):
Código PHP:
function cambiar($valor) {
    if(
$valor =='0'){
    
$valor "1";
    }
    return 
$valor;
    } 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 30/12/2004, 13:40
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 20 años, 7 meses
Puntos: 4
Pregunta comento te...

ahi lo habia hecho, pero te cuento cual es el problema que tengo desde que le di el return.

primero no me queda muy claro como hacer para que una función termine la ejecución en un punto específico.

si yo tengo este ejemplo, que es lo que me ocurria, como lo estructuro pa que ande?

Código PHP:
$numero0rand(0,9); 
$numero1rand(0,9); 
$numero2rand(0,9); 
$numero3rand(0,9); 

$clue"$numero0 - $numero1 - $numero2 - $numero3 "

$numexplode('-',$clue); 
function 
cambiar($valor) { 
    if(
$valor =='0'){ 
    
$valor "1"
    } 
if(
$valor =='1'){ 
    
$valor "7"
    }
if(
$valor =='7'){ 
    
$valor "2"
    }
return 
$varlor;
    } 
                         
echo 
cambiar($num[0]); 
mi idea era que por ejemplo, si ejecuto cambiar(0) locambie por "1", y que termine la ejecución, el problema es que cuando $valor es cero, lo cambia por uno, luego el if que sigue se convierte en true entonces lo cambia de uno a siete, y depsues encuentra otro if preguntando por siete y me lo vuelve a cero.

provisoriamente en mi script estoy usando letras, cosa que no las encuentre otra vez en la lista de if y me las vuelva a patear.

no existe una especie de "break" que me permita salir de la función al toque cuando ya ejecuto un if?
osea, tipo switch?
mi problema es que estoy haciendo esto por medio de una funcion para no tener que escribir 10 if, por cada variable que quiero modificar.

ok, gracias y bueno, si se les ocurre algo
__________________
w32.oktubre@mm <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.

Última edición por oktubre; 30/12/2004 a las 13:41
  #4 (permalink)  
Antiguo 30/12/2004, 14:37
 
Fecha de Ingreso: junio-2004
Ubicación: Stgo, Chile
Mensajes: 51
Antigüedad: 19 años, 10 meses
Puntos: 0
y entonces por que no la haces con switch????
a?

Saludos,
Victoria
  #5 (permalink)  
Antiguo 30/12/2004, 14:54
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 20 años, 7 meses
Puntos: 4
Pregunta te explico bella...

cuando inicializo el array:
$num= explode('-',$clue);

voy a tener cuatro posiciones en ese array, $num[0], hasta $num[3], y no me dan ni ganas ni creo conveniente escribir a patas un "switch" completo de 9 casos si luego de procesar $num[0] voy a tener que repetir lo mismo para varias variables en un solo script.
Podría ser escribir el switch dentro de la definición de la función, pero no anda.

es como que cuando escribo

echo cambiar($num[0]) ; nada sucede

((( igual voy a volver a ver si escribiendo un switch con cuidado, ya que soy medio burro logro queande )))

por loque me decis no hay forma de interrumpir la función y obtener un return antes?


?
__________________
w32.oktubre@mm <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.
  #6 (permalink)  
Antiguo 31/12/2004, 04:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En general tienes las instrucciones break y hasta exit para detener o romper la ejecución de un bucle por ejemplo ..

Ejemplo:

Código PHP:
bucle(){
   if (
$tal=="algo"){
      
// salir del bucle aquí mismo
      
break;
   }

Un saludo,
  #7 (permalink)  
Antiguo 31/12/2004, 05:08
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Cita:
por loque me decis no hay forma de interrumpir la función y obtener un return antes?
Creo que en ningun sitio he dicho eso. Dentro de un funcion puedes poner tantos returns como te de la gana, y en los lugares donde te de la gana. Solo tienes que tener en cuenta que cualquier instruccion que este detras de un return no se ejecutara si se ejecuta el return (lo mismo que pasa con el exit).

Es decir, puedes meter un return dentro de cada uno de los ifs. Eso si, lo normal es poner un return justo antes del cierre de la funcion, para devolver un valor si no se ha devuelto ninguno de los otros returns.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 23:41.