2

** 我已经用谷歌搜索了几个小时,并在 stackoverflow 中进行了搜索。找到了几个类似的,但还没有找到好的答案。**

我正在考虑使用 codeigniter 重写我的项目。

我有一个带有可能查询字符串的 search.php:

search.php?o=1&kk=1&k=sales&kx=&w=4&l=New+York%2C+NY%2C+USA&i=222&i=229&i=225&i=238&i=237&i=203&el=3&eu=10&ei=on&d=5&d=4&d=9&d=6&at=&a=Any

请注意 $_GET['i'] & $_GET['d'] 可以是数组。

我发现一些提到

$this->url->uri_to_assoc();

希望我可以检索 $_GET 值作为

/i/222/i/229/i/225/i/238/i/237/i/203

或者

/i/222/229/225/238/237/203

所以我用 controllers/show.php 进行了测试

class show extends CI_Controller
{
    function get()
    {
        echo "<pre>";
        print_r ($this->uri->uri_to_assoc());
        echo "</pre>";
    }
}

当我输入如下 URL 时,

http://localhost/index.php/show/get/i/0123/i/52/i/l2

上面的代码只返回最后一个输入。

Array
(
    [i] => l2
)

我的实际问题是,在 Codeigniter 中,从上面的 URL 中,有没有办法作为数组检索为

Array
(
[i] => array ([0] => 0123, [1] => 52, [2] => 12)
)

或类似的不使用查询字符串?(因为如果我启用 Querystring 我不能使用其他 Codeigniter 帮助功能等)

所以我可以像这样检索我原来的 $_GET 查询字符串

Array
(
[d] => array ([0] => 123, [1] => 456),
[i] => array ([0] => 11, [1] => 99),
[dx] => 1,
[dy] => 'New+York'
)

在 Codeigniter 中。

4

1 回答 1

-1

您是否尝试过使用原始 PHP 查询字符串?

$_SERVER['QUERY_STRING']

然后逐步通过它

$vars=$_SERVER['QUERY_STRING'];
$vars=explode('&',$vars);
$d=array();
$i=array();
foreach($vars as $var)
{
   $split=explode('=',$var);
   if($split[0]=='d')
   {
       $d[]=$split[1];
   }
   elseif($split[0]=='i')
   {
       $i[]=$split[1];
   }
   else
   {
        $$split[0]=split[1];// note the double $$ signs
   }
}
于 2012-04-19T13:17:15.073 回答