一道PHP面试题

27 篇文章 0 订阅
4 篇文章 0 订阅
<来自 cnmm22:http://blog.csdn.net/cnmm22/article/details/44810929>


       $a=0;

       $b=0;

       If($a=3||$b=3){

              $a++; 

              $b++;

       }

       Echo$a.”,”.$b;  

写出运行结果。

结果是1,1.

知识点1:if里的运算顺序。实际上顺序是,If($a=3||$b=3){  = If($a=(3||$b=3)){     因为|| 的优先级会大于赋值符号。

知识点2:|| 短路功能,|| 这个叫短路或,(3||$b=3)等于多少?等于1,因为(3||$b=3)的意思是3是不是真?是真,|| 后面的赋值运算$b=3 就不会再计算了,那最后,b还是0,因为$b=3根本没执行,而(3||$b=3)=真。

知识点3:在If($a=3||$b=3){ 之后a等于多少?上面说了,(3||$b=3)=真,那a就等于真。在PHP里,真就等于1,a就等于1。顺带注意,在PHP里真是1,假是多少?假不是0,而是空,啥都没有。

所以结果,a++ =1,b++=1。

那 


       $a=0;

       $b=0;

       If($a=3|$b=3){

              $a++; 

              $b++;

       }

       Echo$a.”,”.$b;  

运行结果又是多少?


答案是4,4。

这里要注意一个知识点,或 和 短路或。 |  是或,而|| 是短路或,(3|$b=3)等于多少?等于3,因为,首先 或会让后面 $b=3继续运算,所以,b就等于3了,另外,或是位运算,所以,(3|$b=3)=3,所以a=3。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值