Newsgroup: it.comp.www.php
Titolo: Valore di un array come chiave di un altro array

Ciao a tutti, vorrei utilizzare il valore di un array come chiave di un
altro, cioe' fare qualcosa tipo:
<?
echo "$array1[$array2[key]]";
?>
che pero' e' sbagliato.
Ho cercato sul manuale e sul web ma non ho trovato la risposta.
Qual e' la sintassi corretta?
Grazie.

 Qual e' la sintassi corretta?
echo $array1[$array2['key']];
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.gnu.org/philosophy/free-sw.it.html

,
punkarruso wrote:
 >> Ho cercato sul manuale e sul web ma non ho trovato la risposta.
 >
 >hai cercato maluccio...
Puo' essere.
 >> Qual e' la sintassi corretta?
 >
 >echo $array1[$array2['key']];
Non direi:
Parse error:  parse error, unexpected '[', expecting ']' in...
Il problema non e' negli apici.

 Il problema non e' negli apici.
posta il codice che hai usato...
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.gnu.org/philosophy/motivation.it.html

,
punkarruso wrote:
 >posta il codice che hai usato...
Allora: ho un array $corrispondenza[] con indici da A a H che contiene i
nomi di 8 squadre, una tabella sql contenente il calendario di un
campionato, da cui estraggo una riga che a sua volta contiene gli
accoppiamenti delle squadre (indicate come lettere da A a H) nella
giornate specificata; le colonne sono c1 f1 c2 f2 c3 f3 c4 f4 (squadra
in casa della partita 1, squadra fuori della partita 1, ecc.), il che
porta a:
[...]
$result = mysql_query("SELECT * FROM Calendario WHERE giornata='$next_giornata'");
$line = mysql_fetch_array($result);
for($n=1;$n<=4;$n++) {
        $casa = "c$n";
        $fuori = "f$n";
        echo "<tr><td>$corrispondenza[$line[$casa]] - $corrispondenza[$line[$fuori]]</td></tr>";
}
[...]
il che a quanto pare e' illecito.
Altra cosa, perche' non posso usare $line['c$n']
(Parse error:  parse error, unexpected T_ENCAPSED_AND_WHITESPACE,
expecting T_STRING or T_VARIABLE or T_NUM_STRING in...) ma devo usare
una variabile d'appoggio?
Per ora ho risolto riscrivendo in altro modo e usando altre variabili
d'appoggio.

 d'appoggio.
è già un buon workaround (nel senso che funziona).
se poi puoi rivedere il disegno della tabella, meglio!!
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.gnu.org/press/2002-04-11-ms-patent.html

 wrote in message news:<ao0uk5$q3$1...@nowhere.local>...


,
punkarruso wrote:
 >tralasciando il fatto che sia il disegno PEGGIORE che abbia mai visto
 >(sul serio, è una sega mentale non indifferente!)
Visto cosi' puo' essere, il fatto e' che questa tabella e' solo una
parte e il suo disegno e' funzionale al resto del progetto.
 >error_reporting(E_ALL);
 >#    ^^ sempre!
E' un po' piu' sopra :-)
 >for($n=1;$n<=4;$n++)
 >        echo "<tr><td>".$corrispondenza[$line['c'.$n]]." - 
 >".$corrispondenza[$line['f'.$n]]."</td></tr>\n";
Ok, quindi come dici sotto il problema erano gli array all'interno dei
doppi apici, ora e' chiaro.
 >un po' di confusione... se leggi bene il manuale:
 >
 >- Why is $foo[bar] wrong? You should always use quotes around an 
 >associativea rray index. For example, use $foo['bar'] and not $foo[bar].
Si, ma dovrebbe al limite dare solo un warning, no?
 >- Nota: Inside a double-quoted string, an other syntax is valid. See 
 >variable parsing in strings for more details.
 >
 >quest'ultima riporta in sostanza che un array all'interno dei "" va scritto 
 >tra parentesi graffe. IMHO è meglio referenziare un array FUORI dai "" (+ 
 >usato).
Eh, ho letto quel pezzo e ho provato anche con le graffe, ma non ho
ottenuto risultati.
 >vedi sopra. inoltre, l'indice di un array è considerato una stringa quindi
 >$line['c$n'] si può scrivere $line['c'.$n];
Ok, perfetto.
Ciao e grazie

 Ciao e grazie
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://marketing.tenagra.com/rfc1855.html