我试图从一个看起来像这样的数组构建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'。
知道如何删除该数字索引吗?
答案 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']);
结果