Problema de PHP $_GET
Pregunta
foreach ($_GET as $field => $label)
{
$datarray[]=$_GET[$field];
echo "$_GET[$field]";
echo "<br>";
}
print_r($datarray);
Este es el resultado que estoy obteniendo.Veo que los datos están ahí en Dicarray, pero cuando yo echo $_GET[$field]
Sólo me aparece "Matriz"
Pero print_r($datarray)
imprime todos los datos.¿Alguna idea de cómo extraigo esos valores?
PRODUCCIÓN
Array (
[0] => Array (
[0] => Grade1
[1] => ln
[2] => North America
[3] => yuiyyu
[4] => iuy
[5] => uiyui
[6] => yui
[7] => uiy
[8] => 0:0:5
)
)
Solución
EDITAR:Cuando completé tu prueba, aquí estaba la URL final:
Probablemente se trate de una URL con formato incorrecto.Cuando pasa claves duplicadas en una consulta, PHP las convierte en una matriz.La URL anterior probablemente debería ser algo como:
Esto creará entradas individuales para la mayoría de los campos y hará que $_GET['answer'] sea una matriz de las respuestas proporcionadas por el usuario.
Línea de fondo:arregla tu archivo Flash.
Otros consejos
Usar var_export($_GET)
para ver más fácilmente qué tipo de matriz está obteniendo.
Desde el resultado de su script puedo ver que tiene múltiples matrices anidadas.Parece ser algo como:
$_GET = array( array( array("Grade1", "ln", "North America", "yuiyyu", "iuy", "uiyui", "yui","uiy","0:0:5")))
Entonces, para sacar esas variables necesitas algo como:
echo $_GET[0][0][0]; // => "Grade1"
llamar a echo en una matriz siempre generará "Matriz".print_r (del manual de PHP) imprime información legible por humanos sobre una variable.
Usar <pre>
etiquetas antes print_r
, entonces tendrás un árbol impreso (o simplemente mira la fuente.A partir de este punto, tendrá una comprensión clara de cómo es su matriz y podrá extraer el valor que desee.
Sugiero seguir leyendo sobre $_GET
variables y matrices, para una mejor comprensión de sus valores
Prueba esto:
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);
Está imprimiendo solo "Array" porque cuando dices
echo "$_GET[$field]";
PHP no puede saber a qué te refieres $_GET
elemento $field
, lo ve como si quisieras imprimir la variable $_GET
.Entonces, intenta imprimirlo y, por supuesto, es una matriz, eso es lo que obtienes.Generalmente, cuando quieras hacer eco de un elemento de matriz, lo harás así:
echo "The foo element of get is: {$_GET['foo']}";
Las llaves le dicen a PHP que todo es una variable que necesita ser interpretada;de lo contrario, asumirá que el nombre de la variable es $_GET
por sí mismo.
En tu caso, aunque no necesitas eso, lo que necesitas es:
foreach ($_GET as $field => $label)
{
$datarray[] = $label;
}
y si quieres imprimirlo, solo hazlo
echo $label; // or $_GET[$field], but that's kind of pointless.
El problema no estaba en su archivo flash, cámbielo de nuevo a como estaba;sabes que era correcto porque tu variable $dataarray contenía todos los datos.¿Por qué quieres extraer datos de $_GET
en otra matriz de todos modos?
¿Quizás las variables GET sean matrices en sí mismas?es decir. http://sitio.com?var[]=1&var[]=2
Parece que su argumento GET es en sí mismo una matriz.Sería útil tener tanto la entrada como la salida.