0

我正在生成当天和接下来的六个:

 <?php
     for($i=0; $i<=6; $i++){
         echo strtoupper(date("j",mktime(0, 0, 0, 0,date("d")+$i,0))."\n");
         echo "|";
     }  
 ?>

这会产生这个(在我写这篇文章时的 2 月 8 日):

8 |9 |10 |11 |12 |13 |14 |

如何执行以下操作:

  • 去掉每个数字后面的空格
  • 摆脱尾随管道

我想要的输出是:

8|9|10|11|12|13|14
4

4 回答 4

2

此任务非常适合do..while循环:

$i = 0;
do {
    echo strtoupper(date("j",mktime(0, 0, 0, 0,date("d")+$i,0)));
} while ($i++ < 6 && print "|");

该空间存在是因为您\n在输出中有。您的浏览器会将任何空格变成空格。

于 2013-02-08T14:45:05.993 回答
1

只是为了DateTime上课的乐趣(PHP 5.3+)

<?php
$start = new DateTime();
$interval = new DateInterval('P1D');
$period = new DatePeriod($start,$interval,6);

$days = array();
foreach($period as $date) {
  $days[] = $date->format('d');
}

$daysString = implode('|',$days);

echo $daysString;

是的...DatePeriod需要实现某种有用的交互器...

于 2013-02-08T15:05:13.753 回答
0

您可以使用变量并将其附加到文本中,并在 for 循环之后输出字符串。

$output = '';
for($i=0; $i<=6; $i++){
    $output .= (date("j",mktime(0, 0, 0, 0,date("d")+$i,0))).'|';
}
$output = rtrim($output, '|');
echo $output;
于 2013-02-08T14:42:31.017 回答
0
for($i=0; $i<=6; $i++){
$dates[] = date('j', strtotime('+ '.($i+1).' days');
}
echo implode('|', $dates);
于 2013-02-08T14:44:35.320 回答