<?php
$a = 3;
$b = 3;
if($a=5 || $b=5){
echo "$a<br>";
$a++;
$b++;
}

echo "$a,$b";输出结果
1
1,4不理解a的值为什么是1?

解决方案 »

  1.   

    $a = 3;
    $b = 3;
    if($a=5 || $b=5){
      var_dump($a); //bool(true)
      $a++;
      $b++;
    }
         
    var_dump($a, $b); //bool(true) int(4)
    这是运算符的优先级问题
    由于赋值符(=)低于逻辑运算符(||)
    所以 $a=5 || $b=5
    实际是 $a = (5 || $b=5)
    $a 是逻辑值 true其后的 $a++ 并不会改变 $a 为 true 的事实
    而 true 用 echo 打印时就是 1
    因此你用 var_dump 就能看明白了
      

  2.   


    if($a=5 || $b=5)
    这个判断其实就写的不合理(可以这么写,我懂),但是,在实际运用中,你要这么写,就是一耳光。。