questão? php $ _GET
Pergunta
foreach ($_GET as $field => $label)
{
$datarray[]=$_GET[$field];
echo "$_GET[$field]";
echo "<br>";
}
print_r($datarray);
Esta é a saída que estou recebendo. Eu vejo os dados estão lá em datarray mas quando
I echo $_GET[$field]
Eu só obter "matriz"
mas imprime print_r($datarray)
todos os dados. Alguma idéia de como eu puxar esses valores?
OUTPUT
Array (
[0] => Array (
[0] => Grade1
[1] => ln
[2] => North America
[3] => yuiyyu
[4] => iuy
[5] => uiyui
[6] => yui
[7] => uiy
[8] => 0:0:5
)
)
Solução
EDIT: Quando eu terminei o teste, aqui foi o URL final:
Esta é provavelmente uma URL mal formada. Quando você passar chaves duplicadas em uma consulta, PHP torna um array. O URL acima, provavelmente, deve ser algo como:
Isto irá criar entradas individuais para a maioria dos campos, e fazer $ _GET [ 'resposta'] ser uma matriz de respostas fornecidas pelo usuário.
A linha inferior:. Corrigir seu arquivo Flash
Outras dicas
Use var_export($_GET)
para mais facilmente ver que tipo de matriz que você está recebendo.
Desde a saída do seu script eu posso ver que você tem várias matrizes aninhadas. Parece ser algo como:
$_GET = array( array( array("Grade1", "ln", "North America", "yuiyyu", "iuy", "uiyui", "yui","uiy","0:0:5")))
de modo a obter essas variáveis ??para fora você precisa de algo como:
echo $_GET[0][0][0]; // => "Grade1"
chamando echo em uma matriz será sempre de saída "matriz". print_r (do manual do PHP) imprime informações legível sobre uma variável.
marcas Use <pre>
antes print_r
, então você vai ter uma árvore impressa (ou apenas olhar para a fonte. A partir deste ponto, você terá uma compreensão clara de como sua matriz é e será capaz de puxar o valor que deseja.
Eu sugiro ler mais sobre $_GET
variável e < a href = "http://www.php.net/types.array" rel = "nofollow noreferrer"> matrizes , para uma melhor compreensão dos seus valores
Tente isto:
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);
É a impressão apenas "matriz" porque quando você diz
echo "$_GET[$field]";
PHP não pode saber que você quer dizer elemento $_GET
$field
, vê-lo como você querer imprimir $_GET
variável. Então, ele tenta imprimi-lo, e é claro que é um Array, então é isso que você recebe. Geralmente, quando você quer ecoar um elemento de matriz, você faria assim:
echo "The foo element of get is: {$_GET['foo']}";
As chaves dizer PHP que a coisa toda é uma variável que precisa ser interpretada; caso contrário ele irá assumir o nome da variável é $_GET
por si só.
No seu caso, porém, você não precisa disso, o que você precisa é:
foreach ($_GET as $field => $label)
{
$datarray[] = $label;
}
e se você quiser imprimi-lo, basta fazer
echo $label; // or $_GET[$field], but that's kind of pointless.
O problema não era com o seu arquivo flash, mudá-lo de volta para como era; você sabia que era correto porque seu $ dataArray variável continha todos os dados. Por que você quer para extrair dados de $_GET
em outro array de qualquer maneira?
Talvez as variáveis ??GET são próprias matrizes? ou seja http://site.com?var[]=1&var[]=2
Parece que o seu argumento GET é em si um array. Seria útil ter a entrada, bem como a saída.