php中的While/Switch
我一直在自学php,我遇到了这段代码(就像所有代码一样,为了更好地理解php,我自己也尝试过),但这段代码没有运行php中的While/Switch,php,while-loop,switch-statement,Php,While Loop,Switch Statement,我一直在自学php,我遇到了这段代码(就像所有代码一样,为了更好地理解php,我自己也尝试过),但这段代码没有运行 <?php $i = 0; while($i++){ switch ($i) { case 5: echo "At 5<br />"; break 1; case 10: echo "At 10; quitting<br />"; break 2; default: break; } } ?>
<?php
$i = 0;
while($i++){
switch ($i) {
case 5:
echo "At 5<br />";
break 1;
case 10:
echo "At 10; quitting<br />";
break 2;
default:
break;
}
}
?>
输出是空的,但是我说$i递增直到它达到5是正确的,在这一点上开关($i)将在echo“at 5”处转到案例5,然后它将中断该switch语句并在while循环中继续递增$i直到它达到10,然后它将重复相同的过程并转到echo“at 10;quitting”断路器2会离开开关,而环路
在$i的所有其他值中,我假设它变为默认值,并且刚刚断开开关
谢谢。问题是:
$i = 0;
while($i++){
执行$i++
操作时,变量$i
将以1递增,但返回的值仍然是旧值,请参阅上的手册。因此,当$i
第一次仍然是0
时,条件的计算结果为false
,并且整个while()
循环永远不会运行/您的开关永远不会到达
要先增加值,然后返回值,请执行以下操作:
$i = 0;
while(++$i){
请参阅。尝试使用变量/常量而不是神奇的数字来提高代码的可读性,您还可以使用循环上的标签来中断/继续。下面是一个例子:
define("SOMETHING", 5);
define("SOMETHING_ELSE", 10);
$count = 0;
mainLoop:
while($count < 100) { #loop virtually forever
switch(++$count) { #increment and switch on $count in each iteration
case SOMETHING: #$count = 5
#do something here
echo "At 5<br />";
break; #break switch, continue while loop
case SOMETHING_ELSE: #$count = 10
#do something else here
echo "At 10; quitting<br />";
break mainLoop; #break while loop
}
}
定义(“某物”,5);
定义(“其他事物”,10);
$count=0;
主回路:
而($count<100){#几乎永远循环
开关(++$count){#在每次迭代中递增并打开$count
案例某物:#$count=5
#在这里做点什么
回声“在5
”;
断开;#断开开关,继续循环
其他情况:#$count=10
#在这里做点别的
回声“10点;退出
”;
中断主循环;#在循环期间中断
}
}
在第一个循环中,$i值变为默认值,并且会中断。啊,这很有意义,谢谢!解释得很好