!$step && $sizelimit/=2;是不是还赋值了?

解决方案 »

  1.   

    是,相当于进行了$sizelimit = $sizelimit/2 的赋值后,然后再进行!$step && $sizelimit
      

  2.   

    if(!$step) $sizelimit /= 2;
      

  3.   

    楼上正解。
    $step 条件是个开关,如果它为false就不不检测后面一个条件,也就是后面$sizelimit/=2得不到执行。
    这叫懒惰检测。&& 与。有一个条件为假,后面就不检测。
    || 或。有一个条件为真,后面就不检测。
    顺序是从左到右。
    不过最好不要使用这种特性,难看不说,程序逻辑的清晰性也被打乱了。
      

  4.   

    这类表达最常见的就是 ... or die(...);
      

  5.   

    if(!$step){
        $sizelimit=$sizelimit/2; 
    }