-3

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

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

代码的输出是:-

3 3 3

但我想要以下输出:-

1 2 3

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

4

1 回答 1

3

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

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

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

编辑

好吧,你不喜欢我的第一个答案,正如我通过这次投票所看到的那样......所以为了挽回我的信誉,我建议你这个解决方案,直接解析查询字符串:

<?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]; ?>

希望这次能帮到你。

于 2013-08-03T11:48:08.057 回答