<?php $a = 5; $b = 7; if($a = 7 && $b == 7) { $a++; $b++; } echo $a,$b; ?> 为什么输出$a是1?

 我来答
势芷蓝3S
2014-07-06 · TA获得超过2389个赞
知道小有建树答主
回答量:1122
采纳率:0%
帮助的人:379万
展开全部
if($a = 7 && $b == 7)运算如下:$a=(7 && $b==7);
$a = ( 7 && true);
$a = true;

if($a = 7 && $b == 7)转化为if($a=true);
条件为真,且$a赋值 true;
{$a++; $b++; }执行;在此如果var_dump($a);可知其类型为布尔型;
而$a的类型为bool,$a++后$a仍为true;
echo $a;//也就是 echo true;得1。
匿名用户
2014-07-06
展开全部
你在if语句的条件语句中,给$a重新赋值了, 而if语句的条件语句中, 是不能进行赋值的
那么,这个时候,$a的值失效,也就是false, 而布尔值false在进行加减运算时, php会自动把假的东西转换为0, 那么 0 + 1 = 1
而$b, 值从来没有改变过, 那么 7 + 1 = 8
那么,最后结果自然就是 18
注: php的if语句中的条件语句,是不能进行赋值运算的, 当然, 这样做,php并不会出现运行错误而中断, 但是这样做是没有现实意义的!
程序的运行, if语句本来就是构成的核心, if语句出错或者无法按照预定目的运行,那开发出来的程序,就是废品!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-07-07
展开全部
然后,if条件成立,可以进行大括号内的语句执行。但是,你大括号里面只做了,自加一运算,却并没有赋值给任何变量,所以你输出的还是1。如果,你改成,$a=++$a,结果应该会变成2。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-07-07
展开全部
$b==7判断正确,返回的值是true,也就是1然后再和7做逻辑或,得到的结果还是1,然后赋值给$a。所以,变量a的值是1。
追答
错了,是逻辑与。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-07-07
展开全部
先运算,逻辑与。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式