Newsgroup: it.comp.www.php
Titolo: Dovrei comporre il nome di una variabile.

Dunque dovrei comporre il nome di una variabile ma non ho idea se sia 
possibile o meno.
Mi spiego con un esempio:
$var1 = "pippo";
$var2 = "arr[1]";
$pippoarr = array ("tizio","caio","sempronio");
echo $var1.$var2;  //QUI VORREI CHE FOSSE L'EQUIVALENTI DI //echo 
$pippoarr[1];
C'è un modo per risolvere? 



Quasi. Prima devi smontare var2, per esempio con explode:
	list($var2base, $var2index) = explode('[', $var2);
	// Adesso var2base vale "arr", var2index vale 1
	$var3 = ${$var1.$var2base};
	// Adesso $var3 si chiama $pippoarr
	$valore = $var3[$var2index];
	// E $valore e' - o dovrebbe essere - $pippoarr[1].
Leonardo che non ha provato
-- 
Enough, enough!  But stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!

 $var3 = ${$var1.$var2base};
Ma qui un "echo $var3;" che dovrebbe dare  $pippoarr non restituisce nulla, 
quindi anche il resto non va.
Aggiungo una domanda, giusto per complicare un pò le cose, se la $var2 
anzichè essere: $var2 = "arr[1]"; fosse $var2 = "arr[$j]"; cioè avesse un 
indice al suo interno, sarebbe possibile ugualmente fare questa 
"composizione"?
Grazie in anticipo. 

Puz740 ha scritto:

manuale:
explode
foreach
for
array
array function
la variabile di variabile e` na "cappella"
-- 
Voi un applicazione web per la tua azienda ?
non riesci mai a trovare quello che sai di avere
e non ricordi chi lo ha fatto
g u f o _ r o s s o  CHIOCCIOLA 
libero.it

"composizione"?
Si', a quel punto lo fai molto meglio:
	list($var2base) = explode('[', $var2);
	$var2index	= $j;
Ma forse dovresti dirci cosa stai cercando di fare, perche' puo'
darsi che la composizione variabile non sia il piu' adatto...
Leonardo


 darsi che la composizione variabile non sia il piu' adatto...
Ho tante array di questo tipo:
$1_nomearray("dato 1","dato 2"...);
$2_nomearray("dato 1","dato 2"...);
$3_nomearray("dato 1","dato 2"...);
Al file .php arriva, come variabile, il numero iniziale 1.
A quel punto vorrei richiamare l'array corrispondente, es: variabile in 
arrivo 3 - devo chiamare $3_nomearray("dato 1","dato 2"...);
Ovviamente poi, all'interno dello script, devo risalire ai valori 
$3_nomearray [1] etc...
L'unico modo che mi č venuto in mente era quello di comporre il nome della 
variabile.
C'č una soluzione migliore? 

$3_nomearray("dato 1","dato 2"...);
Ti conviene a strabestia fare una cosa come:
	$ad	= array(
		1	=> array('dato 1', ...),
		2	=> array('dato 2', ...),
("Array di array")
Quando ti arriva 1, prendi $ad[1] e hai fatto.
Oltretutto questo e' immediatamente trasportabile su database:
	$id	= (int)$_REQUEST['id'];
	// Mancano i controlli se i dati ci sono, ecc.
	$exec	= SQLExec("SELECT * FROM dati WHERE id=$id;");
	$ad	= SQLFetchTuple($exec);
	SQLFree($exec);
...e i tuoi dati li custodisci su MySQL o simili.


 Quando ti arriva 1, prendi $ad[1] e hai fatto.
Avevo dimenticato una cosa, non ho un array per "numero", ma una coppia di 
array per numero, cioč:
$1_nomearrayTipoA("dato 1","dato 2"...);
$1_nomearrayTipoB("dato 1","dato 2"...);
$2_nomearrayTipoA("dato 1","dato 2"...);
$2_nomearrayTipoB("dato 1","dato 2"...);
$3_nomearrayTipoA("dato 1","dato 2"...);
$3_nomearrayTipoB("dato 1","dato 2"...);
Mi conviene ugualmente?
Array di array... non l'ho mai usato... 

Array di array... non l'ho mai usato... 
No alpitůr? Ahiahiahiahiahi :-)
Scherzi a parte, sul manuale trovi tutto.


 C'č un modo per risolvere? 
Se ti rispondessi "programmare meglio"... te la prenderesti ?
Non mi č *mai* capitato di dover fare una cosa del genere ... perchč 
pensi che ti serva ?
ciao, f.

 che ti serva ?
Ho spiegato tutto nei messaggi precedenti, se pensi ci sia una soluzione 
migliore ben venga.
Grazie.