Fino ad ora abbiamo sempre creato funzioni con una lista finita di argomenti. Questo è infatti il caso più comune ma a volte in alcuni rari casi potremo avere la necessità di passare un numero variabile di argomenti e di non conoscere neanche quanti questi possano essere.

Per fare un esempio noto a molti la funzione printf del c è una di queste.

In PHP non dobbiamo fare assolutamente niente. La dichiarazione della funzione rimane identica a quella precedente. Potete infatti inserire un numero a piacere, ma anche uguale a zero, di argomenti.
Dopo di che potrete divertirvi chiamando la funzione con un numero di argomenti sempre diverso.

La parte all’interno della funzione cambia invece un po’. Dovrete infatti usare le funzioni func_num_args() che vi dirà quanti argomenti sono stati passati.

Per ottenere poi gli argomenti veri e propri dovrete usare una di queste due funzioni func_get_arg() e func_get_args().

La scelta è a vostra discrezione visto che fanno la stessa cosa. L’unica differenza è che la prima ritorna un solo argomento alla volta, la seconda ritorna tutti gli argomenti in un array.

<?php
 
/* funzione che stampa la media tra due o più
   argomenti */
 
function media ($a, $b)
{
  $tot = 0;
 
  $elem = func_get_args();
  for ($i = 0; $i < count($elem); $i++)
    $tot += $elem[$i];
 
  return (double)$tot / count($elem);
}
 
echo "la media tra 4 e 8 è:", media (4, 8);
echo "\nla media tra 4,5,60,7,14 è:", media (4,5,60,7,14);
 
?>

vicius