Funciones con número arbitrario de argumentos [PHP]

Iniciado por madpitbull_99, 6 Marzo 2011, 20:44 PM

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

madpitbull_99

Como muchos ya sabréis, PHP permite definir funciones con parámetros opcionales, otra funcionalidad que no es tan conocida, es que permite crear funciones que aceptan un numero arbitrario de parámetros.

Veamos una función que permite argumentos opcionales:
Código (php) [Seleccionar]

<?php
 
// Funcion que acepta 2 parametros opcionales
 
function dummy($parm1 ''$parm2 '') {
 echo 
"Parametro 1: $parm1 <br />";
 echo 
"Parametro 2: $parm2 <br />";
 }
 
dummy('Hola','mundo!');
?>


Ahora vamos a ver como crear una función que acepte cualquier numero de argumentos, para ello vamos a utilizar la función func_get_args , que devuelve un array numérico con los argumentos pasados a la función.

Código (php) [Seleccionar]
<?php
 
// La lista de argumentos es vacia
 
function sinArgumentos() {
 
 
// Devuelve un array con los argumentos
 // pasados a la funcion
 
$argumentos func_get_args();
 
 foreach (
$argumentos as $k => $v) {
 echo 
"Argumento: ".($k+1).": $v <br />";
 }
 
 }
 
 
sinArgumentos();
 
// No imprime nada
 
 
sinArgumentos('Hola'' mundo ',' maravilloso!');
 
// Imprime los argumentos pasados
 
?>



Esta función nos puede ser muy útil si pensamos crear un pequeño framework o librería. Abajo dejo otro ejemplo con una función que suma un numero indefinido de números.

Código (php) [Seleccionar]
<?php
 
function suma(){
 
$s=0;
 foreach(
func_get_args() as $a$s+= is_numeric($a) ? $a 0;
 
/*
 * Comprueba si el valor introducido es un numero,
 * si no, se toma como un cero
 */
 
return $s;
 };
 
 print 
suma(1,2,3,4,5,6,7,9,10); // Devuelve 47
 
print suma(1,3,3,7); // Devuelve 14
 
print suma(false,array(),5,5);
 
/*
 * Devuelve 10, ya que, el array y false lo
 * toman como un cero
 */
?>


No es nada del otro mundo pero nos puede venir muy bien este tipo de funciones en nuestras aplicaciones. Seguramente muchos ya conocían esta función.



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

Shell Root

Interesante la función de los parámetros indefinidos.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

~ Yoya ~

Bueno el articulo xD

Como lo dijiste, es muy útil la función para implementarla en librerías.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

JungleBoogie

Muy buena funcionalidad, si señor  ;-) . Si lo hubieras puesto hace una semana me habria sido mejor porke estaba buscando esto mismo y lo termine por encontrar Google-ando.

Se deberis UPear de vez en cuando este tema, o bien realizar un tema recopilatorio de "trucos" parecidos y ponerle chincheta