代码之家  ›  专栏  ›  技术社区  ›  Hailwood

编码器点火器-无限参数?

  •  3
  • Hailwood  · 技术社区  · 15 年前

    我正在使用编码器点火器。

    我试图写一个函数,可以采取无限多的参数。

    所以在控制器里

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

    我可以这样称呼它

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

    我该怎么设置?

    3 回复  |  直到 15 年前
        1
  •  6
  •   Yi Jiang G-Man    15 年前

    您可以使用 uri_to_assoc URI class . 所以在你的控制器中,你可以这样做:

    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
        }
    }
    
        2
  •  7
  •   Ross    15 年前

    你也可以这样做:

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

    因此,任何类似于:

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

    将创建一个参数数组。

        3
  •  0
  •   Bruce Alderson    15 年前

    目前还不清楚为什么需要无限(可变)数量的参数,但您可能需要考虑为什么需要它们。

    对于某些类型的参数,可以使用替代的URI语义。通常,URI设计是指向系统中某个事物的路径。无限参数可能不引用资源,而是描述其属性。标签就是一个很好的例子。

    /chicken/red+tall+fat
    

    标签很容易在CodeIgniter中用一个参数实现。

    如果参数引用节点,则可以考虑使用类似的方法:

    /hen-house.bunk4.topshelf/chicken
    

    或者,如果层次结构作为路径很重要,则可以使用 func_get_args() 上面的解决方案。

    推荐文章