CodeIgniter - unlimited parameters?

2019-04-11 17:43发布

I am currently using CodeIgniter.

I am trying to write a function that can take an unlimited number of paramaters.

So in the controller it will be something like

function test($name, $others){
    foreach($others){
       //do something
    }
}

and I could call it like

example.com/control/test/some name/param1/param2/param3/param4/param5... 

How can I set this up?

3条回答
Bombasti
2楼-- · 2019-04-11 18:00

You can get an associated array of URI segments with the uri_to_assoc function in the URI class. So in your controller, you might do something like this:

function test($name){
    $uri_seg = $this->uri->uri_to_assoc(4);

    foreach($uri_seg as $para){
        // Do something with each of the URI segments passed in here after $name
    }
}
查看更多
爱情/是我丢掉的垃圾
3楼-- · 2019-04-11 18:12

you could also do it like this:

function foo($params=array())
{
    $params=func_get_args();
    //print_r($params);
}

so any url like:

site.com/controller/foo/param1/param2/param3/param4

would create an array of parameters.

查看更多
甜甜的少女心
4楼-- · 2019-04-11 18:18

It's not clear why you need an unlimited (variable) number of arguments, but you may want to consider why you need them.

You can use alternative URI semantics for certain types of arguments. Often the URI design is the path to a thing in a system. Unlimited parameters may not refer to the resource, but rather describe its attributes. Tags are a good example of this.

/chicken/red+tall+fat

Tags implement easily in CodeIgniter with a single parameter.

If the parameters refer to a node, you can consider a similar approach:

/hen-house.bunk4.topshelf/chicken

Or, if the hierarchy is important as a path, you can use the func_get_args() solution above.

查看更多
登录 后发表回答