改成下面这样有输出:
$i = 1;
$j = 3;while(($j = $i++) && ($j == 1)){
  echo 'suc';
}$j=$i++;这句执行后,$j=1;$i=2;

解决方案 »

  1.   

    打错了,其实应该是:
    $i = 1;
    $j = 3;while(($j = $i++) && ($j == 2)){
      echo 'suc';
    }但是以下这个代码有输出:
    $i = 1;
    $j = 3;while(($j = $i++) && ($j == 1)){
      echo 'suc';
    }按照道理来说,两个都应该有输出啊。 只不过第一段代码需要多循环一次而已。
      

  2.   

    在第一次运行while时,php检查while()中的表达式为false。那么就算完了,不会再检查第二次了。依你的逻辑,程序将陷入死循环。后面的代码无法得到执行
    计算机没有理由非得等到while()条件为真。只有人才会守株待兔,计算机不会
      

  3.   

    $i = 1;
    $j = 3;while(($j = $i++) && ($j == 2)){
      echo 'suc';
    }while 判斷
    $j = $i++  執行后 $j=1 $i=2, ($j=$i++) 為 true
    $j == 2 因為 $j=1 所以這裡為 falsetrue && false == false
    while 條件不成立,退出循環
      

  4.   

    這樣就可以了
    <?
    $i = 1;
    $j = 3;while(1){
    if(($j = $i++) && ($j == 2)){
    echo 'suc';
    break;
    }
    }
    ?>
      

  5.   

    while(($j = $i++) && ($j == 2))$j = Si++;是进行赋值,再对$i++,所以$j==1;那么$j==2就不成立所以
    ($j = $i++) && ($j == 2)值为false,while循环只有当()中真才执行内部语句。
     
    所以第一个没输出,第二个有输出!
      

  6.   

    因为while循环在第一次判断为false后就会终止,条件都为false了当然就会接着执行下面的了,怎么可能会再次循环呢,,呵呵呵,对吧、、、
      

  7.   

    不是while有问题而是LZ没有理解while怎么用,=是赋值 ==是比较。
    while(($j = $i++) && ($j == 2)) ->$j = 1; while(false) 无输出
    while(($j = $i++) && ($j == 1)) ->$j=1;while(true)  有输出
      

  8.   

    $i++ 返回的是$i的值  ,++ $i返回的是$i+1的值 ,第一个条件($j=$i++) 为true ,这是$j = 1 ,那么第二个条件就不成了了散 ,当然没输出
      

  9.   

    LZ是没弄清楚while循环和++的含义与用法吧,还有基本的逻辑运算啊
      

  10.   

    while循环只给你一次机会,只要遇到为假,就直接跳出循环,不再执行。