SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: ibito en Sábado 28 de Enero de 2006, 09:10

Título: Funciones Con Argumentos Variables...
Publicado por: ibito en Sábado 28 de Enero de 2006, 09:10
Es posible en php, tener una funcion con un numero indeterminado de argumentos?
por ejemplo, que una funcion sea:

Código: Text
  1.  
  2. sumar(1, 2, 3, 4);
  3.  
  4.  

e igual manera pueda recibir:
Código: Text
  1.  
  2. sumar(1,2,3,4,5,6,7);
  3.  
  4.  

no se si me explico...
Título: Re: Funciones Con Argumentos Variables...
Publicado por: Avalon en Sábado 28 de Enero de 2006, 14:31
Si, es posible.

Deberás indicar un valor por defecto para los argumentos opcionales, esa es la forma en que PHP interpreta que son opcionales.

Por ejemplo

Código: Text
  1. function sumar($valor1, $valor2 = 10) {
  2. $total = $valor1 + $valor2;
  3. echo $total;
  4. }
  5.  
  6. sumar(5); // El resultado que se mostraría por pantalla sería 15
  7. sumar(3, 4); // El resultado que se mostraría por pantalla sería 7
  8.  


Espero que te sirva.

Salu2,
Avalon
Título: Re: Funciones Con Argumentos Variables...
Publicado por: ibito en Sábado 28 de Enero de 2006, 20:47
:o
La verdad no sabia eso, es interesante, pero mi duda no era esa, pero leyendo tu respuesta creo que me expresé mal.

Mi duda es, que por ejemplo, si ponemos:
Código: Text
  1.  
  2. sumar(1,2);
  3.  
  4.  
el resultado fuese: 3

si ponemos
Código: Text
  1.  
  2. sumar(1,2,3);
  3.  
  4.  
el resultado fuese: 6

y si pusieramos
Código: Text
  1.  
  2. sumar(1);
  3.  
  4.  
el resultado fuese: 1

a ver si pueden ayudarme  :blink:

Gracias
Título: Re: Funciones Con Argumentos Variables...
Publicado por: Avalon en Domingo 29 de Enero de 2006, 13:53
Pués solo se me ocurre hacerlo de esa forma, no se si habrá otra manera para un número de argumentos indeterminado. O eso o pasar los valores en un array :unsure:

Código: Text
  1. function sumar($valor1, $valor2 = 0, $valor3 = 0, $valor4 = 0, $valor5 = 0, $valor6 = 0, $valor7 = 0, $valor8 = 0, $valor9 = 0, $valor10 = 0) {
  2. $total = $valor1 + $valor2 + $valor3 + $valor4 + $valor5 + $valor6 + $valor7 + $valor8 + $valor9 + $valor10;
  3. return $total;
  4. }
  5.  
  6. echo sumar(5); // El resultado que se mostraría por pantalla sería 5
  7. echo sumar(3, 4); // El resultado que se mostraría por pantalla sería 7
  8. echo sumar(1, 6, 9); // El resultado que se mostraría por pantalla sería 16
  9.  
Título: Re: Funciones Con Argumentos Variables...
Publicado por: hdr en Domingo 29 de Enero de 2006, 17:14
yo no se php pero estoy leyendo el manual y en la parte de funciones dice:

PHP3 no soporta un número variable de parámetros, aunque sí soporta parámetros por defecto (ver Valores por defecto de de los parámetros para más información). PHP4 soporta ambos: ver Listas de longitud variable de parámetros y las referencias de las funciones func_num_args(), func_get_arg(), y func_get_args() para más información.
Título: Re: Funciones Con Argumentos Variables...
Publicado por: ibito en Domingo 29 de Enero de 2006, 18:48
Gracias hernanvid, eso es lo que buscaba, aunque la verdad, en lo que estoy haciendo, llegue a la misma conclusion que Avalon

Encontré esto en php.net, gracias a hernanvid
Código: Text
  1.  
  2. <?php
  3. function foo()
  4. {
  5.    $num_args = func_num_args();
  6.    echo "Numero de argumentos: $num_args\n";
  7. }
  8.  
  9. foo(1, 2, 3);    // Imprime 'Numero de argumentos: 3'
  10. ?>
  11.  
  12.  

Habrá que cambiar algunas cosillas  :D
Título: Re: Funciones Con Argumentos Variables...
Publicado por: gnfrs en Lunes 30 de Enero de 2006, 14:55
En PHP 4 se pueden pasar una cantidad ilimitada de parámetros a una función, la declaración de la función no depende de la cantidad de argumentos pasados.

Si una función puede recibir n argumentos, ésta también puede recibir n+1 argumentos siendo n un número mayor o igual a 0 (cero).

Las funciones para recuperar los valores de los argumentos pasados son las que mencionó hernanvid.

Aquí (http://www.php.net/manual/es/functions.arguments.php#functions.variable-arg-list) hay información al respecto.

Saludos.
Título: Re: Funciones Con Argumentos Variables...
Publicado por: Avalon en Martes 31 de Enero de 2006, 12:41
Interesante, gracias por la información. Siempre se aprende algo nuevo :comp:

Salu2,
Avalon