到达变量分配编号后如何从 1 开始循环
How to start loop from 1 after reaching a variabel assigned number
我想在 php 中创建一个循环,在达到变量中分配的特定数字后从 1 重新开始。
- 循环必须 运行 10 次
但是在 i++ 达到 5 之后,我希望这个循环从 1 重新开始,如下所示。
1,2,3,4,5,1,2,3,4,5
请帮忙!!
您可能想要使用模运算符 %
。这将使数字"cycle"如你所愿。
for ($i = 0; $i < 10; $i++) {
echo ($i % 5) + 1;
}
以上将打印出数字 1 到 5 两次。
尝试 -
$count = 0;
for ($i = 1 ; $i <= 10; $i++) {
$count++;
echo $count;
if ($count == 5) {
$count = 0;
echo "</br>";
}
}
试试这个:
$i=1;
while($i<=10)
{
echo $i;
$i++;
if($i>5)
{
$i=1;
echo "</br>";
}
}
<?php
$loop=1;
for($i=1;$i<=10;$i++)
{
echo $loop;
if($i==5)
{
$loop=0;
echo "</br>";
}
$loop++;
}
?>
输出:
12345
12345
这可以在不使用循环的情况下实现,请发现以下 2 个有用的函数
第一个:
function createDateRangeArray($strDateFrom,$strDateTo)
{
// takes two dates formatted as YYYY-MM-DD and creates an
// inclusive array of the dates between the from and to dates.
// could test validity of dates here but I'm already doing
// that in the main script
$aryRange=array();
$iDateFrom=mktime(1,0,0,substr($strDateFrom,5,2), substr($strDateFrom,8,2),substr($strDateFrom,0,4));
$iDateTo=mktime(1,0,0,substr($strDateTo,5,2), substr($strDateTo,8,2),substr($strDateTo,0,4));
if ($iDateTo>=$iDateFrom)
{
array_push($aryRange,date('Y-m-d',$iDateFrom)); // first entry
while ($iDateFrom<$iDateTo)
{
$iDateFrom+=86400; // add 24 hours
array_push($aryRange,date('Y-m-d',$iDateFrom));
}
}
return $aryRange;
}
第二个:
$st_date = '2012-07-20';
$ed_date = '2012-07-27';
$dates = range(strtotime($st_date), strtotime($ed_date),86400);
$range_of_dates = array_map("toDate", $dates);
print_r($range_of_dates);
function toDate($x){return date('Y-m-d', $x);}
这 2 个函数将返回您将传递的 2 个日期之间的日期,然后您可以循环输出数组以执行操作
你可以试试这个:-
$count = 10;
for ($i = 0; $i < $count; $i++)
{
if($i != ($count-1)){$coma = ',';}else{$coma = '';}
$value = ($i % 5)+1;
$output = $value.$coma;
echo $output;
}
输出:- 1,2,3,4,5,1,2,3,4,5
我想在 php 中创建一个循环,在达到变量中分配的特定数字后从 1 重新开始。
- 循环必须 运行 10 次
但是在 i++ 达到 5 之后,我希望这个循环从 1 重新开始,如下所示。
1,2,3,4,5,1,2,3,4,5
请帮忙!!
您可能想要使用模运算符 %
。这将使数字"cycle"如你所愿。
for ($i = 0; $i < 10; $i++) {
echo ($i % 5) + 1;
}
以上将打印出数字 1 到 5 两次。
尝试 -
$count = 0;
for ($i = 1 ; $i <= 10; $i++) {
$count++;
echo $count;
if ($count == 5) {
$count = 0;
echo "</br>";
}
}
试试这个:
$i=1;
while($i<=10)
{
echo $i;
$i++;
if($i>5)
{
$i=1;
echo "</br>";
}
}
<?php
$loop=1;
for($i=1;$i<=10;$i++)
{
echo $loop;
if($i==5)
{
$loop=0;
echo "</br>";
}
$loop++;
}
?>
输出: 12345 12345
这可以在不使用循环的情况下实现,请发现以下 2 个有用的函数
第一个:
function createDateRangeArray($strDateFrom,$strDateTo)
{
// takes two dates formatted as YYYY-MM-DD and creates an
// inclusive array of the dates between the from and to dates.
// could test validity of dates here but I'm already doing
// that in the main script
$aryRange=array();
$iDateFrom=mktime(1,0,0,substr($strDateFrom,5,2), substr($strDateFrom,8,2),substr($strDateFrom,0,4));
$iDateTo=mktime(1,0,0,substr($strDateTo,5,2), substr($strDateTo,8,2),substr($strDateTo,0,4));
if ($iDateTo>=$iDateFrom)
{
array_push($aryRange,date('Y-m-d',$iDateFrom)); // first entry
while ($iDateFrom<$iDateTo)
{
$iDateFrom+=86400; // add 24 hours
array_push($aryRange,date('Y-m-d',$iDateFrom));
}
}
return $aryRange;
}
第二个:
$st_date = '2012-07-20';
$ed_date = '2012-07-27';
$dates = range(strtotime($st_date), strtotime($ed_date),86400);
$range_of_dates = array_map("toDate", $dates);
print_r($range_of_dates);
function toDate($x){return date('Y-m-d', $x);}
这 2 个函数将返回您将传递的 2 个日期之间的日期,然后您可以循环输出数组以执行操作
你可以试试这个:-
$count = 10;
for ($i = 0; $i < $count; $i++)
{
if($i != ($count-1)){$coma = ',';}else{$coma = '';}
$value = ($i % 5)+1;
$output = $value.$coma;
echo $output;
}
输出:- 1,2,3,4,5,1,2,3,4,5