我希望我能够清楚。 我正在从数据库中检索日期(仅限日期)。我有一个循环,我想打印这样的东西:
1 april
1 april
2 april
3 april
3 april
3 april
等...
所以:同一天=没有<br>
代码,不同日期打印<br>
。
我的实际代码:
$prec;
foreach ($list as $rs) {
$day = date("d", strtotime($rs['date']))." ";
if ($day === $prec) {
$space = "";
} else {
$space ="<br>";
}
$prec = $day;
echo $day;
echo date("F", strtotime($rs['date'])).", ";
echo $space;
}
但输出错误:
23 March
25 March
27 March
27 March
27 March
27 March
27 March
28 March
28 March
28 March
02 April
03 April
04 April
我错过了什么?
答案 0 :(得分:2)
问题是您输出换行符的位置 - 如果您在日期之前而不是之后输出换行符,则输出将按预期进行。
echo $space;
echo $day;
echo date("F", strtotime($rs['date'])).", ";
这是因为您的比较是基于当前值与前一个值的比较,因此生成的结果需要放在这两天之间以遵循相同的逻辑
请记住,如果您碰巧在彼此相邻的一个月内同一天,您的代码仍然会返回错误的输出,因为您只按天比较(如果您按完整日期进行比较,它会更好地工作)
答案 1 :(得分:0)
你必须在echo $ day之前回显$ space
//same days = no <br> tag, different days print a <br>
$list = [1, 3, 3, 3,4 ];
$prec ='';
foreach ($list as $day) {
if ($day === $prec) {
$space = ",";
} else {
$space ="<br>";
}
echo $space;
echo $day;
$prec = $day;
}
结果:
<br>1<br>3,3,3<br>4