Nato di domenica…

Ho scoperto oggi un trick davvero interessante, che permette in php di creare delle variabili con nomi dinamici… :-O Cosa vorra mai dire tutto ciò? Semplice:
Se io voglio che una variabile prenda il nome del contenuto di un’altra variabile, posso farlo così:

$a="pippo";
${$a}="pluto";
echo $pippo;//a video verrà visualizzato: pluto

Mi sono trovato di fronte a questo problema, quando stamattina dovevo leggere dei records da un db, e creare delle variabili che si chiamassero come i campi del db.

Siccome sono pigro (e da qui il titolo di questo post, infatti mio papà dice che sono nato di domenica :-P), per semplificarmi la vita i campi letti dal db sono all’interno di un array associativo del tipo $array[0][‘campodb’] e scorro i risultati con un:

foreach(array_keys($array[0]) as $k){ ... }

Quindi sfruttando questa piccola scoperta in poche righe mi sono letto i valori dal db e creato le variabili contenenti i valori letti dal db.

Il codice finito risulta una cosa del tipo:

$q="SELECT campo1,campo2,...,campo20 FROM tabella WHERE condizioni";
$db->query($q); /**/
if($db->numRows>0){
   foreach(array_keys($db->rows[$i]) as $k){
      ${$k}=$db->rows[$i];
   }
}

Alla fine della fiera avrò una variabile per ogni campo presente nella SELECT con all’interno il valore letto dal db ($campo1, $campo2, … , $campo20).
In alternativa qui sotto ci sono alcuni esempi dell’utilizzo di questa features in php (direttamente da php.net)

define('ONE', 1);
function one() {
    return 1;
}
$one = 1;

${"foo$one"} = 'foo';
echo $foo1; // foo
${'foo' . ONE} = 'bar';
echo $foo1; // bar
${'foo' . one()} = 'baz';
echo $foo1; // baz

Sapevate già tutto? D’oh! Sono sempre l’ultimo a scoprire le cose interessanti! ;-(
[ad]

Informazioni

Mi chiamo Davide Ferrero e sono nato il 4 maggio 1986 a Cuneo.
Ho conseguito il diploma di perito tecnico industriale informatico nel 2005 presso l’IIS G. Vallauri di Fossano(CN) con la votazione di 82/100.

Il 17 marzo 2009 mi sono laureato in Informatica alla facoltà di Scienze M.F.N dell’Università degli Studi di Torino con la votazione di 98/110, discutendo la tesi dal titolo “Google App Engine: una soluzione alternativa alla creazione di web application.”. Leggila su scribd.com!

Mi interesso in particolare di programmazione in Php, Python, Java, C#, HTML, CSS e Javascript (specialmente jQuery), di framework MVC (Django e Zend Framework su tutti), di Cloud Computing e di databases e dbms (prediligendo MySQL o Postgresql).

Ho acquisito esperienza nella creazione e realizzazione di siti web dinamici, usando gestori di contenuti (CMS), in particolare WordPress e nell’ottimizzazione dei siti internet per l’indicizzazione sui motori di ricerca (SEO).

Davide Ferrero

Attualmente sono impiegato come Web Developer e mi occupo della realizzazione di applicativi per la domotica, utilizzando prevalentemente php e javascript in ambiente Linux.

Puoi guardare il mio curriculum vitae su:

Linkedin

Per contattarmi clicca qui

oppure scrivi una mail a:

045