Autor Tema: Crear funciones con un número indefinido de parámetros  (Leído 886 veces)

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Crear funciones con un número indefinido de parámetros
« en: 05 de Mayo de 2010, 22:38:24 pm »
Voy a explicar como crear una función con un número de parametros variable.
Esto es, una función se crea así:

function hola($arg1$arg2) {
...
}

Pero alomejor necesitamos pasar muchas variables diferentes, y no nos apetece usar arrays, para esto crearemos la función, pero donde deben ir los parámetros, no pondremos nada.

function hola() {
...
}

Pero, ¡como saco mis variables!
Para esto podemos usar estas funciones:
func_num_args() -> Devuelve el número de argumentos enviados
func_get_args() -> Devuelve un array con los valores de los argumentos
func_get_arg($pos) -> Devuelve el valor del argumento en la posición $pos

Pongamos un ejemplo práctico, queremos comprobar que todas las variables sean númericas (int)

function son_numericas() {
$num func_num_args();
echo &
#39;Comprobando &#39;.$num.&#39; variables.<br>&#39;;
$primera func_get_arg(0);
echo &
#39;Empezamos por &#39;.$primera.&#39;<br>&#39;;
$args func_get_args(); // Cogemos todos los argumentos
for($i=0;$i<$num;$i++) { // Recorremos el array generado con for
if(is_int($args[$i])) {
echo 
$args[$i].&#39; es numerico.<br>&#39;;
} else {
echo 
$args[$i].&#39; no es numerico.<br>&#39;;
// cerramos if
// cerramos for
// cerramos la función


Salu2

Comunidad PHPeros

Crear funciones con un número indefinido de parámetros
« en: 05 de Mayo de 2010, 22:38:24 pm »

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:Crear funciones con un número indefinido de parámetros
« Respuesta #1 en: 05 de Mayo de 2010, 22:53:31 pm »
Buen aporte, sólo conocía la función func_get_args()  pero las otras no. Karma +
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>