关于php中isset的疑问

isset是判断参数是否存在,只有存在并且非空的情况下才返回true;那么为什么if(isset($_POST['username'])){$where['usernam... isset是判断参数是否存在,只有存在并且非空的情况下才返回true;
那么为什么
if(isset($_POST['username'])){
$where['username']=array('like',"%$_POST[username]%");
}
if(isset($_POST['sex'])){
$where['sex']=array('eq',$_POST['sex']);
}

这两条语句,在前台都没有设置内容的时候,能够进入第一条,不能进入第二条,关键是,当时两个$_POST都是空值呀
也不是顺序的问题
更改顺序之后 还是只能进入$_POST['username']的语句
展开
 我来答
nbyh2012
2013-06-29 · TA获得超过3278个赞
知道小有建树答主
回答量:483
采纳率:100%
帮助的人:798万
展开全部

推荐你使用var_dump,看看数组中有哪些下标:

var_dump($_POST);


建议同时检查一下if条件里的值,看它是否为true

var_dump(isset($_POST['username']));


有可能是这样,$_POST['username'] == '',是一个空字符串,但是isset只判断下标是否存在。建议使用empty来检查:

if (empty($_POST['username'])) {
    // ...
}

empty()为true的条件是,下标存在,且不为空值。


但也要注意:

$_POST['number'] = 0;
var_dump($_POST['number']); // true

值为数字的情况要另行判断,以防出错。

黑爪
2013-06-29 · TA获得超过297个赞
知道小有建树答主
回答量:190
采纳率:100%
帮助的人:143万
展开全部
isset()其实按按英文字面翻译过来应该叫"是否被设置过".也就是括号内的变量是否之前被定义了,定义了就会返回真,即使这个变量是空值;

楼主可以pirnt_r($_POST);看看数组内是否传递有'sex'这个键.

我估计应该是没有的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式