PHP从数组构建url查询

时间:2014-09-20 08:45:58

标签: php arrays

我试图从一个看起来像这样的数组构建URL查询:

$serials = ['3804689','3801239','3555689','3804687','1404689','6804689','8844689','4104689','2704689','4604689'];

我想得到这样的查询:

localhost/get?serial=3804689&serial=3801239&serial=3555689

(你明白了)

我尝试使用http_build_query($serials, 'serial', '&');,但它将数字索引添加到前缀' serial'。

知道如何删除该数字索引吗?

7 个答案:

答案 0 :(得分:2)

你可以在字符串中真正拥有相同的GET参数,毕竟如果你试图访问那个变量服务器端,你会用什么?

$_GET['serial'] - 但它会得到哪个连续剧?

如果您真的想获得连续剧列表,只需将数组转换为字符串,将其保存为数组即可。例如:

$serials = "string of serials, delimited by &";
    然后,您可以使用http构建查询。

答案 1 :(得分:2)

正如FYI一样,PHP本身并不处理具有相同名称的多个GET变量。你必须实现一些相当自定义的东西。如果您要创建包含多个序列号的查询字符串,请使用_-之类的分隔符。

例如:soemthing.com/serials.php?serials=09830-20990-91234-12342

从数组中做这样的事情很简单

$get_uri = "?serial=" . implode("-", $serials);

您可以使用爆炸

从字符串中取回数组
$serials = explode("-", $_GET['serials']);

答案 2 :(得分:1)

也许使用foreach

$get = "localhost/get?serial=" . $serials[0];
unset( $serials[0] );
foreach( $serials AS serial ){
    $get .= "&serial=$serial;
}

答案 3 :(得分:1)

是的,很可能有这样的格式,你必须通过索引构建它的查询字符串。像这样:

无需手动构建查询字符串,在这种情况下使用http_build_query()

$serials = ['3804689','3801239','3555689','3804687','1404689','6804689','8844689','4104689','2704689','4604689'];
$temp = $serials;
unset($serials);
$serials['serial'] = $temp;
$query_string = http_build_query($serials);
echo urldecode($query_string);
// serial[0]=3804689&serial[1]=3801239&serial[2]=3555689&serial[3]=3804687&serial[4]=1404689&serial[5]=6804689&serial[6]=8844689&serial[7]=4104689&serial[8]=2704689&serial[9]=4604689

然后最后,如果您需要在某处处理它,只需通过$_GET['serial'];

访问它
$serials = $_GET['serial']; // this will now hold an array of serials

答案 4 :(得分:0)

你也可以尝试这个

$get = "localhost/get?serial=";

$serials = ['3804689','3801239','3555689','3804687','1404689','6804689','8844689','4104689','2704689','4604689'];

$list = implode("&serial=",$serials);
echo $get.$list;

答案 5 :(得分:0)

具有相同的GET参数将不会以这种方式工作。您需要在get参数中使用数组:

localhost/get?serial[]=3804689&serial[]=3801239&serial[]=3555689

如果您只是通过此网址打印$ _GET,您将收到

Array ( [serial] => Array ( [0] => 380468 [1] => 3801239 [2]=> 3555689) )

然后你可以这样做来构建你的查询字符串

$query_str = 'serial[]='.implode('&serials[]=',$serials);

答案 6 :(得分:0)

您可以尝试此版本。

$serials = ['3804689','3801239','3555689','3804687','1404689','6804689','8844689','4104689','2704689','4604689'];
$get = implode('&serials[]=',$serials);
echo '<a href="test.php?serials[]='.$get.'">test</a>';
var_dump($_GET['serials']);

结果

enter image description here