我正在CodeIgniter中开发一个具有文章数据库的应用程序。我希望能够按类型(文章,意见,评论,媒体)过滤文章,然后按日期,观点或评论数量进行排序。我通过URI获取这些参数。我希望能够动态地将这些URI转换为脚本的变量,以便可以使用任何parms组合,但不止一种类型或多种类型。例如,一个URI可能包含一个类型,但没有排序......或者它可能包含一个排序但没有类型...或者它可以包含两个或没有。这就是我的URI现在的样子:
articles/type:media/sort:date-desc
articles/sort:comments-asc
articles/sort:views-desc
... etc.
这是我目前的剧本:
$uri = 'type:media/sort:views-desc';
$uri = explode('/', $uri);
$allowed_types = array('article', 'review', 'opinion', 'media');
$allowed_sorts = array('date-asc', 'date-desc', 'views-asc', 'views-desc', 'comments-asc', 'comments-desc');
if(count($uri) > 0){
for($i=0;$i<=count($args);$i++){
$argument = explode(':', $args[$i]);
if($argument[0] == 'type'){
if(in_array($argument[$i], $allowed_types)){
$type = $argument[1];
}
} else if($argument[0] == 'sort'){
if(in_array($argument[$i], $allowed_sorts)){
$sort_by = explode('-', $argument[1]);
$sort_by_what = $sort_by[0];
$sort_by_how = $sort_by[1];
}
}
}
}
show_error('Type: '.$type.'... Sort By: '.$sort_by_what.'-'.$sort_by_how);
我目前收到一些错误,说三个参数vars $ type,$ sort_by_what,$ sort_by_how没有定义,还有未定义的偏移量:1。关于如何解决这个问题的想法?
答案 0 :(得分:0)
您正在使用范围之外的变量。如果要在范围中使用它们,请确保在那里声明它们。
尝试添加:
$sort_by = "" ;
$sort_by_what = "" ;
$sort_by_how = "" ;
在if条款之外。
我还建议您检查爆炸调用返回的数组的大小,以确保它不为空。我认为这会导致越界错误(未定义的偏移量:1)
因此,代码应如下所示:
$uri = 'type:media/sort:views-desc';
$uri = explode('/', $uri);
$sort_by = "";
$sort_by_what = "";
$sort_by_how = "";
$allowed_types = array('article', 'review', 'opinion', 'media');
$allowed_sorts = array('date-asc', 'date-desc', 'views-asc', 'views-desc', 'comments-asc', 'comments-desc');
if (count($args) > 0) {
for ($i = 0; $i <= count($args); $i++) {
$argument = explode(':', $args[$i]);
if (count($argument) > 0) {
if ($argument[0] == 'type') {
if (in_array($argument[$i], $allowed_types)) {
$type = $argument[1];
}
} else if ($argument[0] == 'sort') {
if (in_array($argument[$i], $allowed_sorts)) {
$sort_by = explode('-', $argument[1]);
if (count($sort_by) > 0) {
$sort_by_what = $sort_by[0];
$sort_by_how = $sort_by[1];
} else {
show_error("Can't parse sorting parameters!");
}
}
}
}
}
show_error('Type: ' . $type . '... Sort By: ' . $sort_by_what . '-' . $sort_by_how);
}
我不知道这是代码片段还是整个代码,但变量$args
来自何处?