如何在一个中传递多个参数

时间:2016-05-20 12:55:38

标签: php

我想做mysite.com/?query="q1=1&q2=2&q3=3"

之类的事情

我已经尝试了$_GET['query'],但它显示了query = q1

4 个答案:

答案 0 :(得分:2)

如果您需要生成包含数组参数的网址,可以使用http_build_query

示例:

$params = http_build_query(array(
    "query" => array(
        "value1",
        "value2",
        "value3"
    ),
    "another_param" => "hello"
));
echo $params;

上面的例子将输出查询%5B0%5D = value1& query%5B1%5D = value2& query%5B2%5D = value3& another_param = hello

(请注意http_build_query为您完成所有编码工作)

您可以在链接中之后使用这些参数:

echo "<a href='http://mywebsite.com/?$params'>link</a>"

然后您可以从$_GET

中读取此参数
if(isset($_GET['query']) && is_array($_GET['query'])){
    foreach($_GET['query'] as $query){
        //Do something with $query value
    }
}

答案 1 :(得分:0)

您需要转义/ urlencode &,因为它将其视为下一个查询字符串参数。

答案 2 :(得分:0)

Url对您在查询参数中传递的字符串进行编码,如: ?query=%22q1%3D1%26q2%3D2%26q3%3D3%22

$s = $_GET['query'];
parse_str(trim($s,'"'),  $output);
print_r($output);

输出是:

Array ( [q1] => 1 [q2] => 2 [q3] => 3 ) 

答案 3 :(得分:0)

使用其他分隔符会更容易,例如可以使用逗号

test.php?query=q1,q2,q3
$parameters = explode(',', $_GET['query']);

如果您需要这些参数来获取值,为什么不使用json?但是你必须首先(或者至少应该)对你的json对象进行urlencode

test.php?query={"q1":1,"q2":2,"q3":3} // raw json
test.php?query=%7B%22q1%22%3A1%2C%22q2%22%3A2%2C%22q3%22%3A3%7D //encoded json

$parameters = json_decode( urldecode($_GET['query']) );

要对参数进行编码,只需使用json_encode和urlencode

即可
$array = array( "q1" => 1, "q2" => 2, "q3" => 3 );
$parameters = urlencode( json_encode($array) );