PHP中的循环问题计数年
我已经创建了一个循环,它将以格式化的方式显示日期2004到2014。但问题是,它显示的是204而不是2004年,并将持续到209年。。那么,如何以格式化的方式显示这些年份,如200420052006等PHP中的循环问题计数年,php,while-loop,Php,While Loop,我已经创建了一个循环,它将以格式化的方式显示日期2004到2014。但问题是,它显示的是204而不是2004年,并将持续到209年。。那么,如何以格式化的方式显示这些年份,如200420052006等 以下是我创建的代码,请告诉我要修复的位置: <?php $yr = 4; while ($yr <= 14) { $x = 1; while ($x <= 31) { echo "$x Jan 20$yr&l
以下是我创建的代码,请告诉我要修复的位置:
<?php
$yr = 4;
while ($yr <= 14) {
$x = 1;
while ($x <= 31) {
echo "$x Jan 20$yr<br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Feb 20$yr<br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Mar 20$yr<br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Apr 20$yr<br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x May 20$yr<br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Jun 20$yr<br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Jul 20$yr<br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Aug 20$yr<br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Sep 20$yr<br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Oct 20$yr<br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Nov 20$yr<br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Dec 20$yr<br>";
$x++;
}
$yr++;
}
?>
最简单的修复方法是设置$yr=2004并在$yr<2014时循环。您没有用前导零填充数字,因此有204、205等。这不是标准,但您可以在while循环中添加if循环,如下所示:
while($x <= 31)
{
if ($yr>=10)
{
echo "$x Oct 20$yr<br>";
}
else
{
echo "$x Oct 200$yr<br>";
}
$x++;
}
echo $x.' Jan 20'.str_pad($yr, 2, '0', STR_PAD_LEFT).'<br>';
while($x=10)
{
echo“$x 10月20日$yr
”;
}
其他的
{
echo“$x十月200$yr
”;
}
$x++;
}
虽然你想做这样的事情,但我还是不明白,因为你把
$yr
设置成这样:
$yr = 4;
试试这个:
$yr = sprintf('%02d', $yr);
echo "$x Jan 20$yr<br>";
$yr=sprintf('%02d',$yr);
回声“$x一月20$yr
”;
既然你能做这样的事情,为什么还要经历这么漫长而奇怪的过程呢
<?php
$yearStart = 2004;
$yearEnd = 2012;
$unixTime = strtotime($yearStart . "-01-01 00:00:00");
$endUnixTime = strtotime($yearEnd . "-12-31 23:59:59");
while ($unixTime < $endUnixTime) {
echo date("d M Y", $unixTime) . PHP_EOL;
$unixTime = strtotime("+1 day", $unixTime);
}
?>
这也有额外的好处,没有显示“2008年2月31日”等,因为该日期甚至不存在
您只需要一个循环
$start = 2004;
$end = 2014;
$dateTime = new DateTime();
$dateTime->setDate($start, 1, 1);
echo "<pre>";
while ( $dateTime->format("Y") <= $end ) {
echo $dateTime->format("d M Y"), PHP_EOL;
$dateTime->modify("+1 day");
}
$start=2004;
$end=2014年;
$dateTime=newdatetime();
$dateTime->setDate($start,1,1);
回声“;
而($dateTime->format(“Y”)format(“dmy”),PHP\u EOL;
$dateTime->modify(“+1天”);
}
我不知道您为什么要通过这么多循环来执行此操作,使用此循环而不是$yr,您将得到正确的年份打印:
<?php
$yr = 4;
while ($yr <= 14) {
$x = 1;
while ($x <= 31) {
echo "$x Jan 20".str_pad($yr, 2, "0",STR_PAD_LEFT)."<br>";
$x++;
}
$yr++;
}
?>
最好的您需要使用
str_pad
函数()。在您的情况下,它是这样的:
while($x <= 31)
{
if ($yr>=10)
{
echo "$x Oct 20$yr<br>";
}
else
{
echo "$x Oct 200$yr<br>";
}
$x++;
}
echo $x.' Jan 20'.str_pad($yr, 2, '0', STR_PAD_LEFT).'<br>';
使用:
echo$x.“1月20日”。str_pad($yr,2,'0',str_pad_左)。“
”;
更适合使用变量$x的函数:
您也可以使用(完全不同的)结构:
<?php
$yar = 4;
while ($yar <= 9) {
$ax = 1;
while ($ax <= 31) {
echo "$ax Jan 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Feb 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Mar 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Apr 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax May 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Jun 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Jul 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Aug 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Sep 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Oct 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Nov 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Dec 200$yar <br>";
$ax++;
}
$yar++;
}
$yr = 10;
while ($yr <= 14) {
$x = 1;
while ($x <= 31) {
echo "$x Jan 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Feb 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Mar 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Apr 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x May 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Jun 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Jul 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Aug 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Sep 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Oct 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Nov 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Dec 20$yr <br>";
$x++;
}
$yr++;
}
?>
根据您的代码,您可以尝试此方法。尽管这不是一种标准方法:
你为什么要花这么长的时间来完成这么简单的事情?有很多PHP函数可以帮助你获得输出。很抱歉,但我不相信。如果你将变量设置为等于2004,它将不会打印出204。请检查你的代码。绝对是最简单最短的答案。只有“con”(与Con-IMO不太一样)这取决于date()
。感谢您回答示例+1:)您能告诉我如何在这段代码中使用str\u replace
,而不是echo
?Ama php编码初学者:()@MaxMuller你想用什么替换你的str\u
?你可以使用ob\u start
或简单地使用$buffer.=
而不是echo
。谢谢,虽然我知道这不是一种标准方式,但我一直在寻找这样的代码!再次感谢
<?php
function displayDate($yr, $yrMax) {
if ($yr > $yrMax) {
return true;
}
else {
displayMonth($yr);
$yr++;
return displayDate($yr, $yrMax);
}
}
function displayMonth($yr, $month = 1) {
if ($month > 12) {
return true;
}
else {
displayDay($yr, $month);
return displayMonth($yr, $month+1);
}
}
function displayDay($yr, $month, $day = 1, $dayMax = 31) {
if ($day > $dayMax) {
return true;
} else {
$displayMonth = getMonth($month);
echo "$day $displayMonth $yr<br>";
$day++;
return displayDay($yr, $month, $day, $dayMax);
}
}
function getMonth($month) {
switch($month){
case 1:
return 'Jan';
case 2:
return 'Feb';
case 3:
return 'Mar';
case 4:
return 'Apr';
case 5:
return 'May';
case 6:
return 'Jun';
case 7:
return 'Jul';
case 8:
return 'Aug';
case 9:
return 'Sep';
case 10:
return 'Oct';
case 11:
return 'Nov';
case 12:
return 'Dec';
}
}
//Here we call the structure build above.
if (displayDate(2004, 2014)) {
echo 'Done';
}
?>
<?php
$yar = 4;
while ($yar <= 9) {
$ax = 1;
while ($ax <= 31) {
echo "$ax Jan 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Feb 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Mar 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Apr 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax May 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Jun 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Jul 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Aug 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Sep 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Oct 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Nov 200$yar <br>";
$ax++;
}
$ax = 1;
while ($ax <= 31) {
echo "$ax Dec 200$yar <br>";
$ax++;
}
$yar++;
}
$yr = 10;
while ($yr <= 14) {
$x = 1;
while ($x <= 31) {
echo "$x Jan 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Feb 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Mar 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Apr 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x May 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Jun 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Jul 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Aug 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Sep 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Oct 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Nov 20$yr <br>";
$x++;
}
$x = 1;
while ($x <= 31) {
echo "$x Dec 20$yr <br>";
$x++;
}
$yr++;
}
?>