你能撸出来?

<?php
    $a = 3;
    $b = 5;
    if($a=5 || $b=7){
        $a++;
        $b++;
    }
    echo $a.$b;
   ?>求解惑,为何a为1
回复列表(29|隐藏机器人聊天)
  • @Ta / 2015-07-18 / /
    #和谐#
  • @Ta / 2015-07-18 / /
    城里人真会玩
  • @Ta / 2015-07-18 / /
    你不会显示出来的结果为14吧
  • @Ta / 2015-07-18 / /
    我的猜想,错了勿喷~

    在if后的 $a=5 是一句赋值语句 而不是判断的
    复制成功,返回布尔值为1

    但是布尔值是不可以做自增运算 ,于是就是一直是 1

    关于b是因为 ||(短路或)  短路性,
    一旦前面的为真,后头的就忽略了
    然后$b还是5,做自增,为6
    然后输出为 1 6
  • x5
    @Ta / 2015-07-18 / /
    @梦浪的小虾米
    $a = 3; //赋值
    $b = 5;
     if ($a=5 || $b = 7)//运算符优先级 逻辑运算符(||)高于赋值运算符(=),即$a = (bool)ture;$b=5;
     { 
    $a++; //$a++ 值不变为1
    $b++; //$b++值为5+1 
    }
     echo $a.$b;
    var_dump($a);可以看到变量类型,布尔值包括true和false两个值
  • @Ta / 2015-07-18 / /
    @1432572068@水木易安,我昨天试过$a=3;
    echo a++;
    echo $a;
    发现a++时,a不变,然后echo $a时,发现$a值加1
    这里的a在a++后输出照理说应该也加1啊
  • @Ta / 2015-07-18 / /
    城里人真会玩
  • @Ta / 2015-07-18 / /
    城里人真会玩。
  • @Ta / 2015-07-18 / /
    @水木易安,赞成,但是此处或运算符的短路性还真不容易理解。。。
  • Ta
    @Ta / 2015-07-18 / /
    @梦浪的小虾米,回复6楼,不久前也遇到一个类似6六楼的事情。比如楼层数:count出楼数后,用$num++,echo出来是竟然是楼数加二,不用$num++,直接把$num和一些数据insert into数据库,$num竟然有加一…………好困惑。可能哪里没弄好吧。
  • Ta
    @Ta / 2015-07-18 / /
    @水木易安@vanwoos,为什么$a赋值后会变成bool????
  • @Ta / 2015-07-18 / /
    @Ta@1432572068@水木易安,好尼玛神奇,在条件句中赋值。没见过。好神奇!
  • Ta
    @Ta / 2015-07-18 / /
    @zoqu,又不是没见过,你不会才明白吧
  • @Ta / 2015-07-18 / /
    @Ta,大神给我讲讲???
  • Ta
    @Ta / 2015-07-18 / /
    @vanwoos,原来这玩意叫短路性?
  • Ta
    @Ta / 2015-07-18 / /
    @zoqu,不敢当,我只是以前犯过这种错误而已
  • @Ta / 2015-07-18 / /
    @Ta,大神给我讲讲。。。。
  • @Ta / 2015-07-18 / /
    $a=5 || $b=7  等于 $a=(5 || $b=7)  
  • @Ta / 2015-07-18 / /
    @快乐是福,更神奇,给我讲讲??
添加新回复
回复需要登录