Quante volte, scrivendo delle tendine riempite dinamicamente con PHP, ci siamo ritrovati a dover scrivere dei controlli condizionali per decidere quale opzione dovesse essere selezionata
// array degli elementi da mostrare nella tendina select
$options = array('mela', 'pera', 'limone', 'banana');
// elemento da selezionare
$daselezionare = "limone";
echo "<select>\n";
foreach ($options as $option) {
if ($option == $daselezionare)
$sel = "selected=\"selected\"";
else
$sel = '';
echo "\t<option>".$option."</option>\n";
}
echo "</select>";
Non che quelle 4 righe per un if rovinino il nostro codice, ma se esiste un modo più elegante per farlo, perchè no?
Per risolvere questo problema di stile ci vengono in aiuto i nomi dinamici delle variabili in php.
Il concetto di base è questo:
$variabile = "cippa";
$$variabile = "lippa";
Anteponendo $$ al nome della variabile si crea *dinamicamente* il nome di una nuova variabile andando a prendere come nome il valore di $variaibile.
Da questo punto in poi quindi avremo una variabile $cippa che contiene la stringa “lippa”.
Per approfondire l’argomento: http://it.php.net/manual/it/language.variables.variable.php
Adesso, applicando questa magia all’esempio di prima, il tutto si ridurrebbe a
// array degli elementi da mostrare nella tendina select
$options = array('mela', 'pera', 'limone', 'banana');
// elemento da selezionare
$daselezionare = "limone";
$$daselezionare = "selected=\"selected\"";
echo "<select>\n";
foreach ($options as $option)
echo "\t<option ".$$option.">".$option."</option>\n";
echo "</select>";
E in questo modo abbiamo risolto le nostre 4 righe in una sola: questione di stile, pura futilità.