题
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:
这可能是一个格式错误的 URL。当您在查询中传递重复的键时,PHP 会将它们变成一个数组。上面的 URL 可能应该是这样的:
这将为大多数字段创建单独的条目,并使 $_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 手册)打印有关变量的人类可读信息。
尝试这个:
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 参数本身就是一个数组。拥有输入和输出将会很有帮助。