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 
                 ) 
)
È stato utile?

Soluzione

MODIFICARE:Una volta completato il test, ecco l'URL finale:

http://hofstrateach.org/Roberto/process.php?keys=Grade1&keys=Nathan&keys=North%20America&keys=5&keys=3&keys=no&keys=foo&keys=blat&keys=0%3A0%3A24

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:

http://hofstrateach.org/Roberto/process.php?grade=Grade1&schoolname=Nathan&region=North%20America&answer[]=5&answer[]=3&answer[]=no&answer[]=foo&answer[]=blat&time=0%3A0%3A24

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top