2011-08-22 21 views
6

¿Cómo hago para escribir una función en PHP con un número indeterminado de parámetros, por ejemploPhp escribiendo una función con parámetros desconocidos?

function echoData (parameter1, parameter2,) { 
    //do something 
} 

Pero cuando se llama a la función que puede utilizar:

echoData('hello', 'hello2', 'hello3', 'hello'4); 

para que más parámetros pueden se enviará ya que la cantidad de parámetros será desconocida.

+2

posible duplicación de [función de PHP con un número ilimitado de parámetros] (http://stackoverflow.com/questions/1577383/php-function-with-unlimited-number-of-parameters) y [¿Puede una función de PHP aceptar un número ilimitado de parámetros?] (http://stackoverflow.com/questions/3078454/can-a-php-function-accept-un-unlimited-number-of-parameters) –

Respuesta

11

func_get_args()

function echoData(){ 
    $args = func_get_args(); 
} 

Tenga en cuenta que, si bien puede hacerlo, no se debe definir ningún argumento en la declaración de la función si se va a utilizar (func_get_args) - simplemente porque se vuelve muy confuso si/cuando cualquiera de los argumentos definidos se omiten

funciones similares acerca de los argumentos

  • func_get_arg()
  • func_get_args()
  • func_num_args()
+0

Tenga en cuenta que, si bien puede hacerlo, usted no debería definir ningún argumento en la declaración de función si va a usar 'func_get_args()' - simplemente porque se vuelve muy confuso si/cuando se omite cualquiera de los argumentos definidos. – DaveRandom

+0

@Dave: Buena captura. Lo agregaré a mi respuesta – genesis

2

func_get_args uso() para recuperar una matriz de todos los parámetros así:

$args = func_get_args(); 

continuación, puede utilizar la matriz o iterar sobre ella, lo que sea apropiado su caso de uso mejor.

0

También puede utilizar una matriz:

<?php  
function example($args = array()) 
{ 
    if (isset ($args["arg1"])) 
     echo "Arg1!"; 
} 

example(array("arg1"=>"val", "arg2"=>"val")); 
8

Sólo para los que se encontró este hilo en Google.

In PHP 5.6 and above you can use ... para especificar el número desconocido de parámetros:

function sum(...$numbers) { 
    $acc = 0; 
    foreach ($numbers as $n) { 
     $acc += $n; 
    } 
    return $acc; 
} 

echo sum(1, 2, 3, 4); // 10 

$numbers es una matriz de argumentos.

Cuestiones relacionadas