码迷,mamicode.com
首页 > Web开发 > 详细

一道PHP面试题

时间:2015-04-01 22:05:32      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:php   面试题   

<来自 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。


一道PHP面试题

标签:php   面试题   

原文地址:http://blog.csdn.net/cnmm22/article/details/44810929

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!