我目前正在使用CodeIgniter。
我正在尝试编写一个可以使用无限数量的参数的函数。
所以在控制器中它会像
function test($name, $others){
foreach($others){
//do something
}
}
我可以称之为
example.com/control/test/some name/param1/param2/param3/param4/param5...
我该如何设置?
答案 0 :(得分:6)
您可以使用URI class中的uri_to_assoc
函数获取关联的URI细分数组。因此,在您的控制器中,您可能会执行以下操作:
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
}
}
答案 1 :(得分:6)
function foo($params=array())
{
$params=func_get_args();
//print_r($params);
}
所以任何网址都像:
site.com/controller/foo/param1/param2/param3/param4
会创建一个参数数组。
答案 2 :(得分:0)
目前尚不清楚为什么需要无限(可变)数量的参数,但您可能想要考虑为什么需要它们。
您可以对某些类型的参数使用替代URI语义。 URI设计通常是系统中事物的路径。无限参数可能不是指资源,而是描述其属性。标签就是一个很好的例子。
/chicken/red+tall+fat
标签可以在CodeIgniter中使用单个参数轻松实现。
如果参数引用节点,您可以考虑类似的方法:
/hen-house.bunk4.topshelf/chicken
或者,如果层次结构作为路径很重要,您可以使用上面的func_get_args()
解决方案。