PHP $ _GET问题
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
之前使用<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®ion=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中提取数据到另一个数组中?