【问题标题】:PHP Loop do action for each 10, 20, 30 etc [duplicate]PHP Loop为每个10、20、30等执行操作[重复]
【发布时间】:2012-05-25 07:33:38
【问题描述】:

在 php 中,我有循环,例如

for ($i = 0; $i <= 1000; $i++) {
   if ($i = 10 || $i == 20 || $i == 30 || $i == 40 || $i == 50 || $i == 60) {
      echo $i;
   }
}

假设我需要在每个10,20,30,40,50,60,..970,980,990 中回显 $i,应该有办法不在if 语句中写入 100 个条件。是否有一些合乎逻辑的方法来查看 $i 是否增加了 10 然后执行以下操作:

if ($i == $i+10) {
   ...
}

附:如果可能的话我不想引入另一个变量来计算我需要找到解决方案只使用$i

【问题讨论】:

    标签: php loops conditional-statements


    【解决方案1】:

    试试:

    if ($i % 10 == 0) 
    

    只要你的索引能被 10 整除,就会触发。

    【讨论】:

    • 使用 === 进行严格的类型比较。
    • 很好看的萨米 - 我想我该再喝杯咖啡了。
    • 还有一个问题,这个 % 怎么叫我在 php.net 上找不到参考
    • 它是取模运算符 - 当你进行除法时它会返回余数。
    【解决方案2】:

    将你的 for 循环重写为:

    for ($i = 0; $i <= 1000; $i+=10) {
    

    而且我不知道这样的逗号是否适合你(就像你最初的帖子一样):

    for ($i = 0, $i <= 1000, $i++) {
    

    【讨论】:

    • 这假设他只是在打印。但是,我怀疑那里还有其他逻辑。他只是为我们简化了代码。
    • 实际上,问题是关于打印的,所以不确定是否有任何其他逻辑。此外,我不知道作者使用逗号而不是分号是如何工作的
    • 它将从0开始打印
    • 很公平。如果目标是简单地产生输出,那么您的方法自然会更有效。
    • 还有很多其他的行,比如 $arr[$i]... 所以这不是我需要的
    【解决方案3】:

    跳过额外的循环:

    for ($i = 10; $i <= 1000; $i=$i+10) {
      echo $i;
    }
    

    或者,如果您仍想在以下之间循环每个数字:

    for ($i = 0; $i <= 1000; $i++) {   
      if( $i % 10 === 0 ) {
          echo $i;
      }  
    }
    

    Test Here

    【讨论】:

    • '===' 是个好习惯。这里很明显 $i 将是一个整数。但是,总的来说,我喜欢强制类型比较。
    【解决方案4】:

    把它放在你的主循环中。 '%' 或 'mod' 给出 $i / 10 的余数。如果余数是 '0',那么你要打印。

    if(0 === ($i % 10)) {
       echo $i;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-04-14
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      • 2013-01-28
      相关资源
      最近更新 更多