使用逻辑运算符'或'返回始终为true

时间:2015-01-08 11:21:07

标签: php debugging logical-operators

hei,所以我想在这里做的是验证我的功能的两个来源,如果设置$ this-> post [" search"]使用它或者如果设置$ this-&gt ; post [" id"]使用id,但不能同时使用两者:

($this->post["search"] or $this->post["id"])

如果我转储我得到一个真实答案的bool值,为什么? 所以,如果我有像sql字符串这样的长字符串,我不想使用elseif,我希望更像是:

$this->sql->cell("select search_for('" . $this->post["search"] or $this->post["id"] . "') as response;");

1 个答案:

答案 0 :(得分:0)

你可能应该根据设置来传递控制流:

if ( isset($this->post["search"]) ) {
  // deal with search
} else if ( isset($this->post["id"]) ) {
  // deal with id
} else { 
  // gracefully reject dealing: nothing to do
}

BTW,isset为空字符串返回true

$test = array( 'a' => '' );
var_dump(isset($test['a']));
//⇒ bool(true)

要确定$_POST参数是否具有值,请使用:

!empty($_POST['id'])

希望它有所帮助。