PDA

View Full Version : [PHP]Come creare funzione capace di operare con array e non


Dânêl
22-07-2008, 14:32
Ciao,
mi è capitato più di una volta di creare una funzione che fosse in grado di gestire sia array che singole variabili, ma mi sono sempre posto l'interrogativo di come fare per non inserire codice ridondante per gestire i due casi.
Faccio un esempio:


function get_messageString($in_param)
{
if(is_array($in_param))
{
foreach($in_param as $array_index)
{
//fa qualcosa
}

}
else
{
//fa la stessa cosa di prima
//considerando una variabile singola

}

return $risultato;
}



C'è modo, oltre a creare un'altra funzione che svolga le istruzioni da eseguire, per evitare di duplicare il codice?

kk3z
22-07-2008, 15:15
function get_messageString($in_param)
{
if(is_array($in_param))
{
foreach($in_param as $array_index => $value)
$risultato = get_messageString($value);

}
else
{
//fa qualcosa

}

return $risultato;
}

Ma facendo così la variabile $risultato viene sovrascritta ogni volta, non so se ti va bene, altrimenti:
function get_messageString($in_param)
{
$risultato = array();
if (is_array($in_param))
{
foreach($in_param as $array_index => $value)
$risultato = array_merge($risultato, get_messageString($value));

}
else
{
//fa qualcosa
$risultato[] = "qualcosa";
}

return $risultato;
}

Dânêl
22-07-2008, 16:22
genio :D

non avevo pensato ad una funzione ricorsiva. Vedrò poi con il profiling eventualmente quanto è il calo di prestazioni e anche un'altra piccola cosa...ma è specifica del progetto.

Grazie infinite. L'utilità delle funzioni ricorsive, e le stesse, le avevo dimenticate dai tempi in cui lessi un libro sul c++ due o 3 anni fa :)