Problema Php $_GET
Domanda
foreach ($_GET as $field => $label)
{
$datarray[]=$_GET[$field];
echo "$_GET[$field]";
echo "<br>";
}
print_r($datarray);
Questo è l'output che sto ottenendo.Vedo che i dati sono lì in DataRray ma quando io echo $_GET[$field]
Ottengo solo "Array"
Ma print_r($datarray)
stampa tutti i dati.Qualche idea su come ottengo questi valori?
PRODUZIONE
Array (
[0] => Array (
[0] => Grade1
[1] => ln
[2] => North America
[3] => yuiyyu
[4] => iuy
[5] => uiyui
[6] => yui
[7] => uiy
[8] => 0:0:5
)
)
Soluzione
MODIFICARE:Una volta completato il test, ecco l'URL finale:
Probabilmente si tratta di un URL non valido.Quando passi chiavi duplicate in una query, PHP le trasforma in un array.L'URL sopra dovrebbe probabilmente essere qualcosa del tipo:
Ciò creerà voci individuali per la maggior parte dei campi e renderà $_GET['risposta'] un array di risposte fornite dall'utente.
Linea di fondo:correggi il tuo file Flash.
Altri suggerimenti
Utilizzo var_export($_GET)
per vedere più facilmente che tipo di array stai ottenendo.
Dall'output del tuo script posso vedere che hai più array nidificati.Sembra essere qualcosa del tipo:
$_GET = array( array( array("Grade1", "ln", "North America", "yuiyyu", "iuy", "uiyui", "yui","uiy","0:0:5")))
quindi per eliminare quelle variabili hai bisogno di qualcosa del tipo:
echo $_GET[0][0][0]; // => "Grade1"
chiamare echo su un array restituirà sempre "Array".print_r (dal manuale PHP) stampa informazioni leggibili su una variabile.
Utilizzo <pre>
tag prima print_r
, allora avrai un albero stampato (o semplicemente guarda la fonte.Da questo punto avrai una chiara comprensione di come è il tuo array e sarai in grado di estrarre il valore che desideri.
Suggerisco ulteriori letture $_GET
variabile e matrici, per una migliore comprensione dei suoi valori
Prova questo:
foreach ($_GET as $field => $label)
{
$datarray[]=$_GET[$field];
echo $_GET[$field]; // you don't really need quotes
echo "With quotes: {$_GET[$field]}"; // but if you want to use them
echo $field; // this is really the same thing as echo $_GET[$field], so
if($label == $_GET[$field]) {
echo "Should always be true<br>";
}
echo "<br>";
}
print_r($datarray);
Sta stampando solo "Array" perché quando dici
echo "$_GET[$field]";
PHP non può sapere cosa intendi $_GET
elemento $field
, lo vede come se volessi stampare la variabile $_GET
.Quindi prova a stamparlo e ovviamente è un array, quindi questo è ciò che ottieni.Generalmente, quando vuoi eseguire l'eco di un elemento dell'array, dovresti farlo in questo modo:
echo "The foo element of get is: {$_GET['foo']}";
Le parentesi graffe dicono a PHP che l'intera cosa è una variabile che deve essere interpretata;altrimenti assumerà che il nome della variabile sia $_GET
da solo.
Nel tuo caso, anche se non ne hai bisogno, ciò di cui hai bisogno è:
foreach ($_GET as $field => $label)
{
$datarray[] = $label;
}
e se vuoi stamparlo, fallo e basta
echo $label; // or $_GET[$field], but that's kind of pointless.
Il problema non riguardava il file flash, ripristinalo com'era;sai che era corretto perché la tua variabile $dataarray conteneva tutti i dati.Perché vuoi estrarre i dati da $_GET
in un altro array comunque?
Forse le variabili GET sono esse stesse array?cioè. http://site.com?var[]=1&var[]=2
Sembra che il tuo argomento GET sia esso stesso un array.Sarebbe utile avere sia l'input che l'output.