【问题标题】:Cycle loop between numbers (range)数字之间的循环循环(范围)
【发布时间】:2017-12-14 13:21:32
【问题描述】:

我有一个数字数组,例如(日历日): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

我想突出显示两个后的每三个数字。

所以它应该看起来像:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

或者它可以是两个后两个,或两个后两个或任何其他对。

我需要一些算法来完成这项工作,请帮忙。

【问题讨论】:

  • 你能分享一下你到目前为止尝试过的东西,或者你最后一次尝试吗?
  • 您是否尝试过在$i 上使用带有 mod 的 for 循环?
  • 到目前为止你尝试过什么?我的意思是,这对我来说是一个“初学者问题”,到目前为止,如果没有你尝试过的任何东西,我们无能为力
  • 是的,我已经尝试在 $i 上使用 mod 循环,但找不到合适的条件。
  • 看看这个ideone.com/bpgdgm

标签: php algorithm numbers cycle


【解决方案1】:

您可以使用模 %。如果模数小于或等于 2 (0,1,2),则突出显示它。

$arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31);

    foreach( $arr as $key => $value ) {
        if ( ( $key % 5 ) <= 2 ) echo "<b>" . $value  . "</b>"; 
        else echo $value; 

        echo "<br />";
    }

【讨论】:

    【解决方案2】:

    您可以在 for 循环中在 $i 上使用简单的 mod 来实现此目的:

    for ($i = 0; $i < 31; $i++) {
        if ($i%5 == 1 || $i%5 == 2 || $i%5 == 3 ) {
            echo "<strong>" . $i . "</strong>";
        } else {
            echo $i;
        }
    }
    

    它需要稍微调整以输出您需要的输出方式,但一般逻辑应该可以工作。

    在此处查看工作示例https://ideone.com/bpgdgm

    【讨论】:

      【解决方案3】:

      这是使用array_slice 和implode 构建字符串的一种方法。

      这会减少循环次数。多少循环取决于“设置”。
      在这种情况下,您提到它进行了 7 次循环,而当您循环数组的每个值时,它会进行 31 次循环。

      $days = range(1,31);
      $i = 3; // consecutive bolded days
      $j = 2; // consecutive not bolded days between the bolded
      $str ="";
      for($k=0;$k<end($days);){
          $str .= "<b>" . implode("</b> <b>", array_slice($days, $k,$i)) ."</b> " . implode(" ", array_slice($days, $k+$i, $j)). " ";
          $k=$k+$i+$j;
      }
      echo $str;
      

      https://3v4l.org/CpoVb

      Array_slice 首先捕获应该加粗的值,然后捕获在下一个“粗体”值之前不应该加粗的值并将其存储在 $str 中。

      【讨论】:

        猜你喜欢
        • 2016-01-23
        • 1970-01-01
        • 2021-12-18
        • 1970-01-01
        • 1970-01-01
        • 2018-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多