$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。
那
$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。
原文地址:http://blog.csdn.net/cnmm22/article/details/44810929