How to get PHP $_GET array?
$_GET中是否可以有一个值作为数组?
如果我尝试发送带有http://link/foo.php?id=1&id=2&id=3的链接,并且我想在php端使用$_GET['id'],那么该值如何成为数组? 因为现在echo $_GET['id']返回3。 它是标题链接中的最后一个ID。 有什么建议么?
在PHP中执行此操作的通常方法是将id[]放在您的URL中,而不仅仅是id:
1
| http://link/foo.php?id[]=1&id[]=2&id[]=3 |
然后$_GET['id']将是这些值的数组。它不是特别漂亮,但是可以直接使用。
您可以将id设置为一系列逗号分隔的值,如下所示:
index.php?id=1,2,3&name=john
然后,在您的PHP代码中,将其爆炸成一个数组:
1 2
| $values = explode(",", $_GET["id"]);
print count($values) ." values passed."; |
这将保持简洁。另一种(更常见于$ _POST)方法是使用数组样式的方括号:
index.php?id[]=1&id[]=2&id[]=3&name=john
但这显然会更加冗长。
您可以通过以下方式在HTML中指定一个数组:
1 2 3
| <input type="hidden" name="id[]" value="1"/>
<input type="hidden" name="id[]" value="2"/>
<input type="hidden" name="id[]" value="3"/> |
这将导致PHP中的$ _GET数组:
当然,您可以在此处使用任何类型的HTML输入。重要的是,所有需要在" id"数组中使用其值的输入均具有名称id[]。
您可以使用查询字符串获取它们:
1
| $idArray = explode('&',$_SERVER["QUERY_STRING"]); |
这将为您提供:
1 2 3
| $idArray[0] ="id=1";
$idArray[1] ="id=2";
$idArray[2] ="id=3"; |
然后
1 2 3 4 5
| foreach ($idArray as $index => $avPair)
{
list($ignore, $value) = explode("=", $avPair);
$id[$index] = $value;
} |
这会给你
1 2 3
| $id[0] ="1";
$id[1] ="2";
$id[2] ="3"; |
当您不想更改链接(例如foo.php?id=1&id=2&id=3)时,您可以执行以下操作(尽管可能有更好的方法...):
1 2 3 4 5 6 7 8
| $id_arr = array();
foreach (explode("&", $_SERVER['QUERY_STRING']) as $tmp_arr_param) {
$split_param = explode("=", $tmp_arr_param);
if ($split_param[0] =="id") {
$id_arr[] = urldecode($split_param[1]);
}
}
print_r($id_arr); |
-
+1,这肯定是需要更多的错误检查等。如果其中包含有趣的字符,则应在其中使用$_SERVER[QUERY_STRING]和urldecode()参数,但是我非常热衷于讨厌PHP [] ,因此实际上我曾经编写过这样的函数。
请参见如何在HTML