我有一个下表。文件表
我想这样安排
<ul>year1
<ul>month1
<li>filename </i>
<li>filename </i>
<li>filename </i>
</ul>
<ul>month2
<li>filename </i>
<li>filename </i>
</ul>
.............
..............
<ul>month12
<li>filename </i>
<li>filename </i>
</ul>
</ul>
<ul>year2
<ul>month1
<li>filename </i>
<li>filename </i>
<li>filename </i>
</ul>
<ul>month2
<li>filename </i>
<li>filename </i>
</ul>
.............
..............
<ul>month12
<li>filename </i>
<li>filename </i>
</ul>
</ul>
等等。年份和月份必须根据文件对应的日期戳显示。我试着使用while循环,它在一年内运行良好(使用EXTRACT(year FROM uploaddate)作为OrderYear),但在这之后,另一个月的循环会根据我不想要的年份重复。那么解决这个问题的办法是什么呢。我使用的是php-mysql。
首先构建一个数据数组,然后循环遍历它们来构建HTML。
$dataarray = array();
while($row = $result->fetch_assoc())
{
$year = date('Y', strtotime($row['uploaddate']));
$month = date('F', strtotime($row['uploaddate']);
$dataarray[$year][$month][] = $row['filename'];
}
foreach($dataarray as $year => $months)
{
echo '<ul>'; //etc.....
foreach($months as $monthname => $filenames)
{
//put one more loop for the filenames in here
}
}
注意:代码可以改进一点,我只是做得很快。
注意:这在自然界中非常像"箭头",所以一旦你让它工作起来,你可能想找到优化的方法。