数字之间循环循环(范围)
Cycle loop between numbers (range)
我有一组数字,例如(日历日):
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
也可以是二接二、四接二或任何其他对。
我需要一些算法来完成这项工作,请帮忙。
您可以通过在 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
您可以使用模 %
。如果模小于或等于 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 />";
}
这是使用 array_slice and implode 构建字符串的一种方法。
这会减少循环次数。循环多少取决于 "settings".
在这种情况下,当您循环数组的每个值时,您提到它进行了 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;
Array_slice 首先捕获应该加粗的值,然后捕获不应该加粗的值,直到下一个 "bold" 值并将其存储在 $str.
中
我有一组数字,例如(日历日): 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
也可以是二接二、四接二或任何其他对。
我需要一些算法来完成这项工作,请帮忙。
您可以通过在 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
您可以使用模 %
。如果模小于或等于 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 />";
}
这是使用 array_slice and implode 构建字符串的一种方法。
这会减少循环次数。循环多少取决于 "settings".
在这种情况下,当您循环数组的每个值时,您提到它进行了 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;
Array_slice 首先捕获应该加粗的值,然后捕获不应该加粗的值,直到下一个 "bold" 值并将其存储在 $str.
中