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
Commenti recenti