首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php中切换/切换

在php中切换/切换
EN

Stack Overflow用户
提问于 2014-05-03 22:59:03
回答 2查看 2.5K关注 0票数 1

我一直试图教自己php,我遇到了这段代码(和所有代码一样,我自己也尝试过,以获得更好的理解等等),但是这个代码没有运行。

代码语言:javascript
复制
<?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 )将在回显"At 5“处转到第5种情况,然后它会中断那个开关语句,然后继续在then循环中递增$i,直到它达到10,然后它会重复相同的过程,然后回显”在10;退出“,中断2将离开这个开关和then循环?

在$i的所有其他值中,我假设它是默认的,只是中断了开关

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-03 23:02:44

问题是:

代码语言:javascript
复制
$i = 0; 
while($i++){

当您执行$i++时,变量$i会增加一个,但是返回的值仍然是旧值,请参阅增量/递减运算符上的手册。因此,当$i仍然是0时,条件将第一次计算为false,整个while()循环永远不会运行/您的switch永远不会到达。

若要先增加值,然后返回值,请执行以下操作:

代码语言:javascript
复制
$i = 0; 
while(++$i){

示例

票数 2
EN

Stack Overflow用户

发布于 2014-05-07 11:54:15

尝试通过使用变量/常量而不是神奇的数字来提高代码的可读性,您还可以使用标签on循环来中断/继续运行。下面是一个给你的例子:

代码语言:javascript
复制
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

  }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23450700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档