首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数之间的循环循环(范围)

数之间的循环循环(范围)
EN

Stack Overflow用户
提问于 2017-12-14 13:21:32
回答 3查看 791关注 0票数 1

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

我想在两次之后突出三个数字。

So it should looks like: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

也可以是两对接一对,或者是两对接两对,或者是其他任何一对。

我需要一些算法来解决这个问题,请帮帮忙。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-14 13:29:03

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

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

Stack Overflow用户

发布于 2017-12-14 13:39:33

下面是使用切片内爆构建字符串的一种方法。

这样做的循环就少了。多少循环取决于“设置”。

在本例中,您提到它会产生七个循环,而当您循环数组的每个值时,只有31个循环。

代码语言:javascript
运行
复制
$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中。

票数 1
EN

Stack Overflow用户

发布于 2017-12-14 13:28:52

您可以在一个for循环中通过一个简单的mod$i上实现这一点:

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

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

https://stackoverflow.com/questions/47814410

复制
相关文章

相似问题

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