我有一个while/for
循环,里面有foreach
循环。阅读代码将使我能够自我解释我在逻辑方面要实现的目标。
用外行人的话来说,我正在尝试用PHP创建日历。 foreach
语句为日历界面创建了35个单元格,4周,7天,5 x 7 = 35。
while
循环占用4月(30)的天数,并尝试每个单元格中的每个范围1-30。
但是,在实现下面的代码时,每个数字都会迭代30次。
$i = 1;
while ($i <= 30){
foreach ($this->cells as $cells){
foreach ($cells as $key => $object){
echo "<td>" . $i . "</td>";
if($object % 7 == 0){
echo "</tr><tr>";
}
}
}
$i++;
}
我试过了:
$i = 1;
while ($i <= 30){
foreach ($this->cells as $cells){
foreach ($cells as $key => $object){
echo "<td>" . $i . "</td>"; $i++;
if($object % 7 == 0){
echo "</tr><tr>";
}
}
}
}
当我只想要1-30时,它输出1-35而不是每次输出1-30次。
我尝试了一个for循环,结果打印出每个数字的许多。对于循环代码:
for ($i = 1; $i <= 30; $i++){
foreach ($this->cells as $cells){
foreach ($cells as $key => $object){
echo "<td>" . $i . "</td>";
if($object % 7 == 0){
echo "</tr><tr>";
}
}
}
}
$this->cells
是数组中的范围1-35
答案 0 :(得分:2)
$i=0;
foreach ($this->cells as $cells){
foreach ($cells as $key => $object){
if($i<=30)
echo "<td>" . $i . "</td>";
$i++;
if($object % 7 == 0){
echo "</tr><tr>";
}
}
}
试试此代码
答案 1 :(得分:1)
$i=0;
while ($i++ < 35){
echo '<td>' . ($i <= 30 ? $i : ' ') . '</td>';
if($i % 7 == 0) {
echo '</tr><tr>';
}
}
我不确定为什么你需要做两个循环,你可以用一个循环完成(除非你需要循环$this->cells
,在这种情况下忽略这个答案:p)