Foros del Web » Programando para Internet » PHP »

Optimizar este codigo

Estas en el tema de Optimizar este codigo en el foro de PHP en Foros del Web. Bueno, tengo una funcion que me cree para probar una cosilla pero una vez listo me gustaría optimizarla de forma que no tenga que ejecutar ...
  #1 (permalink)  
Antiguo 23/06/2011, 08:19
 
Fecha de Ingreso: julio-2009
Mensajes: 103
Antigüedad: 14 años, 8 meses
Puntos: 1
Optimizar este codigo

Bueno, tengo una funcion que me cree para probar una cosilla pero una vez listo me gustaría optimizarla de forma que no tenga que ejecutar 2 veces cada una de las funciones de dentro, os la dejo aquí:

Código PHP:
Ver original
  1. function devolver($url){
  2.    if( funcion1($url)!=""){
  3.        return funcion1($url);
  4.        break;
  5.    }elseif(funcion2($url)!=""){
  6.        return funcion2($url);
  7.        break;
  8.    }elseif(funcion3($url)!=""){
  9.        return funcion3($url);
  10.        break;
  11.    }elseif(funcion4($url)!=""){
  12.        return funcion4($url);
  13.        break;
  14.    }else{
  15.        return "";
  16.    }
  17.    
  18. }

Me surgio necesidad de llamar a esa funcion y vaya ejecutando funciones hasta que una devuelva algo distinto de nulo, tal y como esta la aplicación funciona perfectamente, pero como podréis ver, no me gustaría repetir la función ahi.. estas cosas son las que pasan programando para probar, luego vas agrandando y agrandando y te quedas así :)
  #2 (permalink)  
Antiguo 23/06/2011, 08:37
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 18 años, 9 meses
Puntos: 36
Respuesta: Optimizar este codigo

Código PHP:
    function devolver($url){
       if( (
$funcion1 funcion1($url)) != ""){
           return 
$funcion1;
           break;
       }elseif( (
$funcion2 funcion2($url)) !=""){
           return 
$funcion2;
           break;
       }elseif( (
$funcion3 funcion3($url)) !=""){
           return return 
$funcion3;
           break;
       }else{
           return 
"";
       }     
    } 
¿Esto?
  #3 (permalink)  
Antiguo 23/06/2011, 08:39
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Optimizar este codigo

utiliza recursión.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #4 (permalink)  
Antiguo 23/06/2011, 08:47
 
Fecha de Ingreso: julio-2009
Mensajes: 103
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Optimizar este codigo

Cita:
Iniciado por kiko's Ver Mensaje
Código PHP:
    function devolver($url){
       if( (
$funcion1 funcion1($url)) != ""){
           return 
$funcion1;
           break;
       }elseif( (
$funcion2 funcion2($url)) !=""){
           return 
$funcion2;
           break;
       }elseif( (
$funcion3 funcion3($url)) !=""){
           return return 
$funcion3;
           break;
       }else{
           return 
"";
       }     
    } 
¿Esto?
Bueno eso lo había pensado, pero creo que queda bastante feo no? Pienso que tiene que haber una forma más sencilla de lograrlo.. aunque de momento la que va ganando es esa, para mi aplicación probablemente en algunos casos me ahorro casi la mitad de tiempo. :)
  #5 (permalink)  
Antiguo 23/06/2011, 10:14
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 4 meses
Puntos: 19
Respuesta: Optimizar este codigo

Código PHP:
Ver original
  1. function devolver($url){
  2.        if(($funcion1 = funcion1($url))!="") return $funcion1;
  3.        elseif(($funcion2 = funcion2($url))!="") return $funcion2;
  4.        elseif(($funcion3 = funcion3($url))!="") return $funcion3;
  5.        else return "";
  6. }

No sirve para nada el break.
__________________
Mi blog: magdkudama.com

Mi clase de validación de datos: magdkudama.com/validation
  #6 (permalink)  
Antiguo 23/06/2011, 10:20
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Optimizar este codigo

se podrian ver las funciones?? es decir el codigo de funcion1 funcion 2 funcion n?
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #7 (permalink)  
Antiguo 23/06/2011, 14:12
 
Fecha de Ingreso: julio-2009
Mensajes: 103
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Optimizar este codigo

Las funciones van bien por separado, su funcion es leer si una cadena existe en la url que se le ha pasado, en ese caso la devuelve, sino hace un return ""

Gracias a todos por responder, me quedaré pues con esa version de 6 lineas que no repite las funciones :D

Un saludo!
  #8 (permalink)  
Antiguo 23/06/2011, 14:21
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 18 años, 9 meses
Puntos: 36
Respuesta: Optimizar este codigo

Hola

Yo creo que no he entendido bien que querías/quieres hacer. La versión de GrupoC es exactamente igual que la mía, no ha optimizado nada, salvo que por optimizar te refirieras a tener un código más compacto, porque es lo único que hemos hecho. Sin el contexto del programa es difícil optimizar de verdad. :)

Saludos.
  #9 (permalink)  
Antiguo 23/06/2011, 16:23
 
Fecha de Ingreso: julio-2009
Mensajes: 103
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Optimizar este codigo

Si, es cierto es el mismo código, por eso dije que me quedaba con la versión de 6 lineas, que ya hace lo mismo y ocupa algo menos (al margen que sea la misma), luego os he dado reputación a los 2 porque me habeis respondido cosas utiles :)

Lo que yo quería optimizar es hacer sólo 1 llamada a la función, no 2 y lo he conseguido con tu ayuda, y con la ayuda de GrupoC lo he conseguido tener incluso en menos lineas.

De veras muchas gracias a todos los que han posteado aquí, espero que nadie se haya molestado.
  #10 (permalink)  
Antiguo 23/06/2011, 20:59
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Optimizar este codigo

Que alguien me corrija si esto es incorrecto

Código PHP:
Ver original
  1. function devolver($url){
  2. $res = ( funcion1($url)!="") ? funcion1($url) : '';
  3. $res = ( funcion2($url)!="") ? funcion2($url) : '';
  4. $res = ( funcion3($url)!="") ? funcion3($url) : '';
  5. $res = ( funcion4($url)!="") ? funcion4($url) : '';
  6. return $res;
  7. }
__________________
la la la

Etiquetas: aligerar, funcion
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 06:13.