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 
                 ) 
)
¿Fue útil?

Solución

EDITAR:Cuando completé tu prueba, aquí estaba la URL final:

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

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:

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

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top