Php $ _GET issue
Question
foreach ($_GET as $field => $label)
{
$datarray[]=$_GET[$field];
echo "$_GET[$field]";
echo "<br>";
}
print_r($datarray);
Ceci est la sortie que je reçois. Je vois les données sont là dans datarray mais quand
Je echo $_GET[$field]
Je ne reçois que & "Tableau &";
Mais print_r($datarray)
imprime toutes les données. Une idée de comment je tire ces valeurs?
SORTIE
Array (
[0] => Array (
[0] => Grade1
[1] => ln
[2] => North America
[3] => yuiyyu
[4] => iuy
[5] => uiyui
[6] => yui
[7] => uiy
[8] => 0:0:5
)
)
La solution
EDIT: Lorsque j'ai terminé votre test, voici l'URL finale:
Ceci est probablement une URL mal formée. Lorsque vous transmettez des clés en double dans une requête, PHP en fait un tableau. L'URL ci-dessus devrait probablement être quelque chose comme:
Ceci créera des entrées individuelles pour la plupart des champs et fera de $ _GET ['answer'] un tableau des réponses fournies par l'utilisateur.
Ligne de fond: corrigez votre fichier Flash.
Autres conseils
Utilisez var_export($_GET)
pour voir plus facilement quel type de tableau vous obtenez.
D'après le résultat de votre script, vous pouvez voir que vous avez plusieurs tableaux imbriqués. Cela semble être quelque chose comme:
$_GET = array( array( array("Grade1", "ln", "North America", "yuiyyu", "iuy", "uiyui", "yui","uiy","0:0:5")))
donc pour obtenir ces variables vous avez besoin de quelque chose comme:
echo $_GET[0][0][0]; // => "Grade1"
appeler echo sur un tableau générera toujours & "Tableau &". print_r (du manuel PHP) affiche des informations lisibles par l'homme sur une variable.
Utilisez <pre>
balises avant print_r
, vous aurez alors une arborescence imprimée (ou regardez simplement la source. À partir de là, vous aurez une idée claire de la façon dont votre tableau est et sera en mesure d'extraire la valeur tu veux.
Je suggère des lectures supplémentaires sur la $_GET
. et tableaux , pour mieux comprendre ses valeurs
Essayez ceci:
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);
Il imprime juste & "; Tableau &"; parce que quand vous dites
echo "$_GET[$field]";
PHP ne peut pas savoir que vous voulez dire $_GET
élément $field
, il le voit comme si vous vouliez imprimer la variable <=>. Donc, il essaie de l’imprimer, et bien sûr c’est un tableau, alors c’est ce que vous obtenez. Généralement, quand vous voulez faire écho à un élément de tableau, vous le feriez comme ceci:
echo "The foo element of get is: {$_GET['foo']}";
Les accolades indiquent à PHP que le tout est une variable qui doit être interprétée. sinon, le nom de variable est <=> par lui-même.
Dans votre cas, même si vous n'en avez pas besoin, il vous faut:
foreach ($_GET as $field => $label)
{
$datarray[] = $label;
}
et si vous voulez l'imprimer, faites simplement
echo $label; // or $_GET[$field], but that's kind of pointless.
Le problème ne venait pas de votre fichier flash, modifiez-le à nouveau. vous savez que c'était correct car votre variable $ dataarray contenait toutes les données. Pourquoi voulez-vous quand même extraire des données de <=> dans un autre tableau?
Peut-être que les variables GET sont des tableaux eux-mêmes? c.-à-d. http://site.com?var [] = 1 amp; var [] = 2
Il semble que votre argument GET soit lui-même un tableau. Il serait utile d’avoir l’entrée et la sortie.