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

这是我得到的输出。我看到数据在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 
                 ) 
)
有帮助吗?

解决方案

编辑:当我完成你的测试时,这是最终的 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 文件。

其他提示

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

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

使用 <pre> 之前的标签 print_r, ,那么您将打印一棵树(或者只查看源代码。从这时起,您将清楚地了解您的数组的情况,并且能够提取您想要的值。

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

尝试这个:

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 无论如何进入另一个数组?

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top