PHP $ _GET问题

时间:2020-03-05 18:59:02  来源:igfitidea点击:
foreach ($_GET as $field => $label)
{
   $datarray[]=$_GET[$field];
   echo "$_GET[$field]";
   echo "<br>";
}
print_r($datarray);

这是我得到的输出。我看到数据在datarray中,但是当
我回声$ _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 
                 ) 
)

解决方案

回答

print_r之前使用&lt;pre>标记,那么我们将打印出一棵树(或者只是查看源代码。从这一点上,我们将清楚地了解数组的方式,并能够提取值)。想。

我建议进一步阅读$ _GET变量和数组,以更好地了解其值

回答

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

回答

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

回答

看起来GET参数本身就是一个数组。同时具有输入和输出将很有帮助。

回答

使用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"

回答

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

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

这可能是格式错误的URL。当我们在查询中传递重复键时,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文件。

回答

试试这个:

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

回答

它只是打印"数组",因为当我们说

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中提取数据到另一个数组中?