Newsgroup: it.comp.www.php
Titolo: Trasformare i valori di Array in nomi di variabili (newby)

Salve a tutti.
il problema e' il seguente:
solito sito con lista di files per il download, solo che la lista
viene generata dinamicamente sulla base di un file di testo, che
contiene:
una chiave di identificazione della riga,
il nome del file,
il path,
i formati disponibili.
Nella form che contiene la lista ho creato dei gruppi di radio buttons
che portano come nome la chiave di identificazione e un radio button
per ogni formato, con relativo valore.
La form funziona: genera parametri come:
HK004=d
HK120=r
Ora: come faccio a leggerli ?
Il file php richiamato dalla form controlla p.e. 
se la variabile $HK004 ha "d" o "r" come valore.
Per evitare di scrivere tutte le 120 chiavi come variabili, come
posso trasformare le chiavi di identificazione in nomi di variabili ? 
Qualcosa del genere in principio:
$radioname = $listachiave[$xcounter];
     if($radioname == "d"){
         ......
	  .......
     }elseif ($radioname == "p"){
 
     }
etc.
C'e' un modo?
Tommaso Cafini		       
tca...@gmx.net
Heidelberg                     
caf...@mas-mpc.de


wrote:


 Ora: come faccio a leggerli ?
Ti sei spiegato da bestia. E pensa che io sono un amante degli
eufemismi ;o)
Comunque, estrapolando il tuo esempio, mi pare di capire che
tu abbia:
- un array 0..n chiamato $listachiavi con i nomi delle chiavi
- un array 0..n chiamato $listavalori con i valori relativi
Poi prova a vedere questo esempio, basato su quella che io reputo
essere la tua situazione:
1: for ($i = 0; $i < count ($listachiavi); $i++) {
2:    $nomevariabile = $listachiavi[$i];
3:    $$nomevariabile = $listavalori[$i]; // <= Il trucco è qui
4: }
Note:
a) Nota il doppio dollaro alla riga 3.
b) Dopo il ciclo avrai creato le tue variabili, che si chiameranno
   come le chiavi del tuo array e il cui valore sarà quello associato
   a quella chiave.
c) Studiati gli array associativi, che ti avrebbero risparmiato
   taaanta fatica. Tieni conto che mentre in certi linguaggi gli
   indici di un array possono essere solo numerici, in altri come
   PHP e perl gli indici possono essere ... stringhe !

echo $$a ti da cacca
Si, penso sia proprio "$$" quello che cercavo.
Purtroppo non ho mysql sul server, per questo devo arrabbattarmi con
il file di testo.
Grazie comunque


   PHP e perl gli indici possono essere ... stringhe !
In effetti sono nuovo a PHP. ;-)
Ma posso sempre imparare:
Gli array associativi hanno una chiave, che puo' essere una stringa,
come indice.
Ma come lo richiamo io questo indice dal nulla?
Le righe del file di testo sono piu' o meno cosi':
Chiave|Nome del file|Definizione del file|Path|Formati disponibili
per esempio:
HK001|All|alles laden||\HK_00-01\ALL\|dprg
cinque campi delimitati dal pipe.
Il primo e' quello che uso come indice negli array associativi.
cosicche' 
$Arraycompleto[HK001][Definizione] mi da "alles laden", che  appare
nella lista come introduzione ai Radio buttons con i valori d, p, r e
g.
Partendo dal niente, cioe' sapendo solo che i miei dati sono in questo
file di testo mi creo innanzi tutto un semplice array a indice
numerico che mi estrapola gli indici dal testo. 
Con gli indici poi mi richiamo gli array che mi servono.
Questo il mio approccio.
Esiste un metodo migliore in PHP ?


 g.
Prova se questo, come inizio, ti soddisfa:
1.  echo "<table><form>\n";
2.  foreach ($Arraycompleto as $key => $Arraycampi) {
3.    echo "<TR><TD colspan=\"4\" align=\"left\"><B>$key</B></td>></tr>\n";
4.    echo "<TR>";
5.    echo "<td>$Arraycampi[campo1]</td>";
7.    echo "<td>$Arraycampi[campo3]</td>";
8.    echo "<td>$Arraycampi[campo4]</td>";
9.    $valoriradio = $Arraycampi[campo5];
10.   echo "<TD>";
11.   for ($i = 0; $i < strlen($valoriradio); $i++) {
12.     echo "<INPUT TYPE=\"RADIO\" VALUE=\"" . $valoriradio[$i] .
             "\" NAME=\"$key\">&nbsp;$Arraycampi[Definizione]<BR>\n";
13.   }
14.   echo "<BR></TD>\n";
15.   echo "</TR>\n";
16. }
17. echo "</table>\n";
Non l'ho provato. Sicuramente ci sarą qualche errore.


A prima vista mi soddisfa, eccome.
Devo ammettere che e tutto un'altro stile rispetto a quello mio.;-)
Eppure sono sicuro che lo imparero' questo benedetto PHP. 
Saluti
