Php $ _GET问题

时间:2008-09-17 14:40:43

标签: php arrays printing foreach get

foreach ($_GET as $field => $label)
{
   $datarray[]=$_GET[$field];
   echo "$_GET[$field]";
   echo "<br>";
}
print_r($datarray);

这是我得到的输出。我看到数据存在于数据阵列中但是什么时候 我echo $_GET[$field]

我只得到“数组”

print_r($datarray)打印所有数据。知道我如何提取这些价值观吗?

输出

Array ( 
        [0] => Array ( 
                 [0] => Grade1 
                 [1] => ln 
                 [2] => North America 
                 [3] => yuiyyu 
                 [4] => iuy 
                 [5] => uiyui 
                 [6] => yui 
                 [7] => uiy 
                 [8] => 0:0:5 
                 ) 
)

8 个答案:

答案 0 :(得分:1)

使用var_export($_GET)可以更轻松地查看您获得的阵列类型。

从脚本的输出中我可以看到你有多个嵌套数组。它似乎是这样的:

$_GET = array( array( array("Grade1", "ln", "North America", "yuiyyu", "iuy", "uiyui", "yui","uiy","0:0:5")))

所以为了得到这些变量你需要这样的东西:

echo $_GET[0][0][0]; // => "Grade1"

答案 1 :(得分:1)

编辑:当我完成测试时,这是最终的网址:

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

这可能是格式错误的网址。在查询中传递重复键时,PHP使它们成为一个数组。上面的URL应该类似于:

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

这将为大多数字段创建单独的条目,并使$ _GET ['answer']成为用户提供的答案数组。

底线:修复您的Flash文件。

答案 2 :(得分:0)

<pre>之前使用print_r标签,然后您将打印一棵树(或者只看一下来源。从这一点上,您将清楚地了解您的阵列是如何并且将能够拉出你想要的价值。

我建议您继续阅读$_GET变量和arrays,以便更好地了解其值

答案 3 :(得分:0)

在数组上调用echo将始终输出“Array”。 print_r(来自PHP手册)打印有关变量的人类可读信息。

答案 4 :(得分:0)

试试这个:

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);

答案 5 :(得分:0)

只打印“数组”,因为当你说

 echo "$_GET[$field]";

PHP无法知道您的意思是$_GET元素$field,它会将其视为您想要打印变量$_GET。所以,它试图打印它,当然它是一个数组,这就是你得到的。通常,当您想要回显数组元素时,您可以这样做:

echo "The foo element of get is: {$_GET['foo']}";

大括号告诉PHP整个事情是一个需要解释的变量;否则它将假定变量名称本身为$_GET

在您的情况下,虽然您不需要,但您需要的是:

foreach ($_GET as $field => $label)
{
    $datarray[] = $label;
}

如果你想打印它,只需做

echo $label; // or $_GET[$field], but that's kind of pointless.

问题不在于您的Flash文件,请将其更改回原来的状态;你知道它是正确的,因为你的$ dataarray变量包含所有数据。为什么要将数据从$_GET提取到另一个数组?

答案 6 :(得分:-1)

也许GET变量本身就是数组?即http://site.com?var[]=1&var[]=2

答案 7 :(得分:-1)

看起来你的GET参数本身就是一个数组。输入和输出都会很有帮助。