如何获得PHP $ _GET数组?

fay*_*aya 42 php

是否可以将值$_GET作为数组?

如果我试图发送一个链接http://link/foo.php?id=1&id=2&id=3,我想$_GET['id']在PHP端使用,该值如何成为一个数组?因为现在echo $_GET['id']正在回归3.它是标题链接中的最后一个id.有什么建议?

Jor*_*ing 94

在PHP中执行此操作的常用方法是放入id[]您的URL而不仅仅是id:

http://link/foo.php?id[]=1&id[]=2&id[]=3
Run Code Online (Sandbox Code Playgroud)

然后$_GET['id']将是这些值的数组.它不是特别漂亮,但它开箱即用.


Sam*_*son 26

您可以创建id一系列逗号分隔值,如下所示:

index.php?id=1,2,3&name=john

然后,在PHP代码中,将其分解为一个数组:

$values = explode(",", $_GET["id"]);
print count($values) . " values passed.";
Run Code Online (Sandbox Code Playgroud)

这将保持简洁.另一个(更常用于$ _POST)方法是使用数组样式的方括号:

index.php?id[]=1&id[]=2&id[]=3&name=john

但这显然会更加冗长.


Luc*_*man 18

您可以通过以下方式在HTML中指定数组:

<input type="hidden" name="id[]" value="1"/>
<input type="hidden" name="id[]" value="2"/>
<input type="hidden" name="id[]" value="3"/>
Run Code Online (Sandbox Code Playgroud)

这将在PHP中生成这个$ _GET数组:

array(
  'id' => array(
    0 => 1,
    1 => 2,
    2 => 3
  )
)
Run Code Online (Sandbox Code Playgroud)

当然,您可以在此处使用任何类型的HTML输入.重要的是,'id'数组中所需值的所有输入都具有名称id[].


Chr*_*ish 15

您可以使用查询字符串获取它们:

$idArray = explode('&',$_SERVER["QUERY_STRING"]);
Run Code Online (Sandbox Code Playgroud)

这会给你:

$idArray[0] = "id=1";
$idArray[1] = "id=2";
$idArray[2] = "id=3";
Run Code Online (Sandbox Code Playgroud)

然后

foreach ($idArray as $index => $avPair)
{
  list($ignore, $value) = explode("=", $avPair);
  $id[$index] = $value;
}
Run Code Online (Sandbox Code Playgroud)

这会给你

$id[0] = "1";
$id[1] = "2";
$id[2] = "3";
Run Code Online (Sandbox Code Playgroud)


Chr*_*heD 6

当你不想改变链接时(例如foo.php?id=1&id=2&id=3)你可能会做这样的事情(尽管可能有更好的方法......):

$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);
Run Code Online (Sandbox Code Playgroud)