新手请求:是不是 spArgs() 函数有问题?取不到值

#1 youngqj

function admin_list(){
$tpl=$this->spArgs("template","admin");
$db=spClass("guestbook");
if((isset($_SESSION['name']))&&(isset($_COOKIE['login']))){
if(($this->spArgs('status'))=="0"){
$condition=array("status"=>0);
$this->rs=$db->spPager($this->spArgs('page',1),10)->findAll($condition);
$this->page=$db->spPager()->getPager();

}
else{
switch ($this->spArgs('flag')){

case 0 :
$condition=array("flag"=>0,"status"=>1);
$this->rs=$db->spPager($this->spArgs('page',1),10)->findAll($condition,"postime desc");
$this->pager=$db->spPager()->getPager();
$this->flag=0;
break;
case 1:
$condition=array("flag"=>1,"status"=>1);
$this->rs=$db->spPager($this->spArgs('page',1),10)->findAll($condition,"id desc");
$this->pager=$db->spPager()->getPager();
$this->flag=1;
break;

default:
$this->rs = $db->spPager($this->spArgs('page', 1), 10)->findAll("","id desc");
$this->pager=$db->spPager()->getPager();
$this->flag=3;

break;
}

}
}
else echo "";

$this->display("{$tpl}/admin_list.html");
}


分别取不到status=0  flag=0  flag 其他的能取到如 flag=1
URL 是http://127.0.0.1/index.php?c=admin&a=admin_list&flag=0
http://127.0.0.1/index.php?c=admin&a=admin_list&status=0

之前 flag=0 的时候可以显示 后来就不能了 不知道为什么

2010-04-14 00:57:15

#2 jake

spArgs没有问题,主要是在PHP中,false和0是相等的,所以一般会将 0 和 非0 来进行判断,也就是布尔判断。所以我们一般写程序的时候,都会把0的条件放到最后作为默认。楼主可以试试 $this->spArgs("flag", 0);

而且上面写的程序有些费解了,flag既然可以取值0,1,3(3是默认),为什么不能正常地写成 1,2,0(0或false为默认)呢?

在switch判断中,false的取值是default这个是一个良好的编程习惯。

2010-04-14 08:39:05