php的while循环的诡异地方 改成下面这样有输出:$i = 1;$j = 3;while(($j = $i++) && ($j == 1)){ echo 'suc';}$j=$i++;这句执行后,$j=1;$i=2; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 打错了,其实应该是:$i = 1;$j = 3;while(($j = $i++) && ($j == 2)){ echo 'suc';}但是以下这个代码有输出:$i = 1;$j = 3;while(($j = $i++) && ($j == 1)){ echo 'suc';}按照道理来说,两个都应该有输出啊。 只不过第一段代码需要多循环一次而已。 在第一次运行while时,php检查while()中的表达式为false。那么就算完了,不会再检查第二次了。依你的逻辑,程序将陷入死循环。后面的代码无法得到执行计算机没有理由非得等到while()条件为真。只有人才会守株待兔,计算机不会 $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 == falsewhile 條件不成立,退出循環 這樣就可以了<?$i = 1;$j = 3;while(1){ if(($j = $i++) && ($j == 2)){ echo 'suc'; break; }}?> while(($j = $i++) && ($j == 2))$j = Si++;是进行赋值,再对$i++,所以$j==1;那么$j==2就不成立所以($j = $i++) && ($j == 2)值为false,while循环只有当()中真才执行内部语句。 所以第一个没输出,第二个有输出! 因为while循环在第一次判断为false后就会终止,条件都为false了当然就会接着执行下面的了,怎么可能会再次循环呢,,呵呵呵,对吧、、、 不是while有问题而是LZ没有理解while怎么用,=是赋值 ==是比较。while(($j = $i++) && ($j == 2)) ->$j = 1; while(false) 无输出while(($j = $i++) && ($j == 1)) ->$j=1;while(true) 有输出 $i++ 返回的是$i的值 ,++ $i返回的是$i+1的值 ,第一个条件($j=$i++) 为true ,这是$j = 1 ,那么第二个条件就不成了了散 ,当然没输出 LZ是没弄清楚while循环和++的含义与用法吧,还有基本的逻辑运算啊 while循环只给你一次机会,只要遇到为假,就直接跳出循环,不再执行。 2个基础问题 PHP cookie与session的问题 请教高手-网页采集问题 cookie 的使用,我在本文件夹model,下设置cookie成功,跳到上级,为什么无效 zend framework 疑问 把ip最后一位数字替换成星号 求关于 定时 计划任务的相关代码或者思路提示 关于二维数组递归,帮个忙,急, rename函数出现奇怪的权限问题 用EditPlus打开文件怎么会出现色块 [初学Php]关于页面内容跳转 关于xampp1.77 windows 版本 apache busy的问题
$i = 1;
$j = 3;while(($j = $i++) && ($j == 2)){
echo 'suc';
}但是以下这个代码有输出:
$i = 1;
$j = 3;while(($j = $i++) && ($j == 1)){
echo 'suc';
}按照道理来说,两个都应该有输出啊。 只不过第一段代码需要多循环一次而已。
计算机没有理由非得等到while()条件为真。只有人才会守株待兔,计算机不会
$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 條件不成立,退出循環
<?
$i = 1;
$j = 3;while(1){
if(($j = $i++) && ($j == 2)){
echo 'suc';
break;
}
}
?>
($j = $i++) && ($j == 2)值为false,while循环只有当()中真才执行内部语句。
所以第一个没输出,第二个有输出!
while(($j = $i++) && ($j == 2)) ->$j = 1; while(false) 无输出
while(($j = $i++) && ($j == 1)) ->$j=1;while(true) 有输出