Alcuni amici mi hanno chiesto di aiutarli con uno script php in cui avevano un problema da risolvere con una funzione, ma i dati di questo problema non erano sempre gli stessi in numero. Cioè per risolvere il problema una volta dovevano essere passati alla funzione 3 argomenti, la volta dopo 5...quindi non era definito un numero base.
La soluzione in PHP a questo problema è molto semplice, infatti il PHP ci mette a disposizione qualche funzione ad-hoc.
-
func_get_args() che inserisce tutti gli argomenti passati alla funzione in un array;
-
func_num_args() che invece restituisce il numero degli argomenti passati alla funzione;
È quindi molto semplice risolvere questo problema grazie a queste due funzioni, senza incasinarsi passando alle funzioni array o serializzando tutto!
Inserisco di seguito anche un esempio di utilizzo:
<?php
var_args( "arg0", "arg1", "arg2" );
var_args( "arg0", "arg1", "arg2", "arg3", "arg4", "arg5" );
function var_args( $var ) {
if( ( $ncolumn = func_num_args() ) == 0 ) {
echo "Nessun argomento passato!";
return;
}
echo "Numero di valori passati come argomento: ${ncolumn}\n";
$list = func_get_args(); // Inserisce gli argomenti ricevuti in un array;
echo "Mostro tutti gli argomenti ricevuti:\n";
echo "\t0) ${var}\n"; // $var è obbligatoria passarla!
for( $i = 1; $i < $ncolumn; $i++ ) {
echo "\t${i}) ".$list[$i]."\n";
}
echo "\n";
return;
}
?>
Numero di valori passati come argomento: 3
Mostro tutti gli argomenti ricevuti:
0) arg0
1) arg1
2) arg2
Numero di valori passati come argomento: 6
Mostro tutti gli argomenti ricevuti:
0) arg0
1) arg1
2) arg2
3) arg3
4) arg4
5) arg5
Matrix86