从url PHP中读取多个参数

时间:2013-08-03 11:46:11

标签: php

我有一个链接mydomain.com/somefile.php?data=1&data=2&data=3。我想从URL中提取所有三个数据。我使用了以下代码: -

echo $_GET['data']." ".$_GET['data']." ".$_GET['data'];

代码的输出是: -

3 3 3

但我想要以下输出: -

1 2 3

如何进行?任何帮助将不胜感激 请...不要将此问题标记为重复...这与上一个不同,我无法更改网址

1 个答案:

答案 0 :(得分:2)

你做不到。如果传递一个简单的参数,PHP将只采用最后的数据。但是,您可以使用以下语法通过URL传递数组:

?data[]=1&data[]=2&data[]=3

php:
var_dump($_GET['data']);

修改

嗯,你不喜欢我的第一个答案,因为我可以通过这个downvote看到...所以为了赎回我的可信度,我建议你通过直接解析查询字符串来解决这个问题:

<?php

$qstring = $_SERVER['QUERY_STRING']; // "data=1&data=2&data=3" here
$args = explode('&', $qstring);

$data = array();

for ($i = 0; $i < count($args); $i++) { 
    $param = explode('=', $args[$i]);

    // If the key hasn't been seen yet, add a new array to data collection 
    if(empty($data[$param[0]])) 
        $data[$param[0]] = array();

    // If there's a value given (we can have case like "data=1&test" for example)
    if(!empty($param[1]))
        $data[$param[0]][] = $param[1];
}

print_r($data);
/*
    Array
    (
        [data] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 3
            )

    )
*/

然后你可以这样做:

<?php echo $data['data'][0].' '.$data['data'][1].' '.$data['data'][2]; ?>

希望这次能帮助你。