Salidas de una función

Iniciado por ZHOSS-9, 22 Diciembre 2011, 01:06 AM

0 Miembros y 1 Visitante están viendo este tema.

ZHOSS-9

Hay algo que siempre me ha llevado de cabeza y no entiendo. Yo he hecho funciones, sencillas.. pero funciones al fin y al cabo. El problema viene en que no sé cuando le tengo que asignar una salida, es decir:

Código (php) [Seleccionar]
function holaMundo() {
        echo "Hola mundo";
}


Ahí, el contenido del parentesis está vacio, y el resultado será el echo..

Sin embargo, aquí un ejemplo más complejo:

Código (php) [Seleccionar]
function fetch_replaced_session_url($url)
{
global $yrya;

$url = addslashes($url);
$url = fetch_removed_sessionhash($url);

if ($yrya->session->vars['sessionurl'] != '')
{
if (strpos($url, '?') !== false)
{
$url .= '&' . $yrya->session->vars['sessionurl'];
}
else
{
$url .= '?' . $yrya->session->vars['sessionurl'];
}
}

return $url;
}


¿Por qué se pide retornar $url? ¿Es decir, por qué es más útil retornarlo.. a qué se debe, qué hace? ¿No sirve igual guardarlo en una variable o algo parecido?

Un saludo y gracias por adelantado.

dark_sargon

Código (php) [Seleccionar]
<?php

  
echo "El resultado de sumar 5 y 6 es ";
  echo 
sumador(5,6); //Llamada a la función

  
function sumador($num1,$num2){
    
$resultado $num1 $num2;
    return 
$resultado;
  }

?>


Con return, se hace la suma y la misma llamada a la función toma el valor del resultado. Sin el return solo se hace la suma.
http://www.actimediaonline.com
Diseño Web, animación y más.

http://www.ciudadoscura.com
Diseño Web, electrónica, programación, móviles y más.

ZHOSS-9

Pero sigo sin pillarlo.. retorna el valor de la suma, vale.
Aun así si pusieras

Código (php) [Seleccionar]
 function sumador(){
   $num1 = 5;
   $num2 = 6;
   $resultado = $num1 + $num2;
}

  sumador();
  echo $resultado;


¿no haría lo mismo? ¿o me estoy equivocando?
Porque el resultado ya lo estás guardando en una variable, entonces el sentido de tener que guardarlo en el retorno de la función es lo que  no entiendo.. ¿daría igual hacerlo de las dos formas o guardarlo ahí tiene ventajas?

dark_sargon

No es correcto ya que la variable $resultado no puede ser usada por fuera de la función sumador(), es decir la variable $resultado de la función es diferente a la variable $resultado fuera de la función.

Otra cosa es que si asignas los valores de $num1 y $num2 dentro de la función, esta quedará inservible para otros valores diferentes a 5 y 6.

Suponiendo que tu script debe hacer 100 sumas, del modo que lo estás haciendo, tendrías que hacer 100 funciones mientras que usando bien las características de una función, bastaría con una sola.

Aclaro que sería posible hacerlo con el código que haz publicado pero debes hacer global la variable $resulado para poder usarla afuera:
Código (php) [Seleccionar]
<?php

 
function sumador(){
   
$num1 5;
   
$num2 6;
   global 
$resultado;
   
$resultado $num1 $num2;
}
 
  
sumador();
  echo 
$resultado;

?>


Como te digo, sería mejor dejar variables las entradas de la función:
Código (php) [Seleccionar]
<?php

 
function sumador($num1$num2){
   return 
$resultado $num1 $num2;
}
 
  echo 
sumador(5,6);

?>
http://www.actimediaonline.com
Diseño Web, animación y más.

http://www.ciudadoscura.com
Diseño Web, electrónica, programación, móviles y más.

ZHOSS-9

Ahora edito este mensaje, que me he confundido de tema y me creia que estaba respndiendo a otro !
Voy a probar lo que has dicho dark, pero me has ayudado mucho! Muchas gracias!