Pagine: [1]
Autore Discussione: [PHP] Ricevere un numero non definito di argomenti in una funzione  (Letto 454 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
Matrix86
Amministratore
Full Member
*****

Popolarità: +7/-0
Scollegato Scollegato

Messaggi: 113



WWW
« inserito:: Settembre 20, 2009, 16:28:27 »

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:

Codice:
<?php
var_args
"arg0""arg1""arg2" );
var_args"arg0""arg1""arg2""arg3""arg4""arg5" );

function 
var_args$var ) {
if( ( $ncolumn func_num_args() ) == ) {
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;

?>

Citazione
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
« Ultima modifica: Settembre 20, 2009, 16:30:31 da Matrix86 » Registrato



Angel_of_Destroy
Jr. Member
**

Popolarità: +1/-0
Scollegato Scollegato

Messaggi: 53



E-mail
« Risposta #1 inserito:: Settembre 20, 2009, 18:17:20 »

Il php mi ha sempre affascinato... (LOVE)
Registrato

Il tempo scorre inesorabile lungo le autostrade della vita..

Pagine: [1]
Stampa
Vai a: