<?php $a = 5; $b = 7; if($a = 7 && $b == 7) { $a++; $b++; } echo $a,$b; ?> 为什么输出$a是1?
展开全部
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。
$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语句出错或者无法按照预定目的运行,那开发出来的程序,就是废品!
那么,这个时候,$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
展开全部
先运算,逻辑与。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询