我收到了一些记录,包括专栏''时间',' catagory''内容'保存在MySql数据库中。Demo PHP(实际上我使用的是Yii,数据由dataprovider提供。)
我需要以用户友好的方式呈现数据。
该列表分组为"周" =>"日期" =>"记录"。 Demo Output html
有些人可以给我一个聪明的方法来进行php循环吗?
我是否需要执行周循环来检查存在的周并保存键值数组
然后检查同一天的任何记录并保存在另一个数组中,
然后最后做输出循环来显示html?非常感谢。
<div class="tree">
<ul>
<li>
<span>2014, Week 2 , 2014-01-05~2014-01-11</span>
<ul>
<li>
<span>Monday, January 6</span>
<ul>
<li>
<div class="record">
<span>08:00:30</span><br>
<span>Play</span><br>
<span>Do something good...</span><br>
</div>
</li>
</ul>
</li>
答案 0 :(得分:0)
function getRecords($result){
$arr = new array();
while ($row = myqsli_fetch_array($result)) {
$arr[] = $row;
}
return $arr;
}
$week;
$date;
$records = getReceords($queryresultfromyourdb);
foreach($records as $rec)
{
if ($week != $rec["Week"])
{
echo $rec["Week"] . '<br>';
$week = $rec["Week"];
}
if ($date != $rec["Date"])
{
echo $rec["Date"] . '<br>';
$date = $rec["Date"];
}
echo $rec["record"] . '<br>';
}
答案 1 :(得分:0)
这是php代码:
<?php
//fake data setting
$recordlist=Array();
$record=Array();
$record['time']='2014-01-06 08:00:30';
$record['catagory']='Play';
$record['content']='Do something good...';
$recordlist[]=$record;
$record=Array();
$record['time']='2014-01-07 10:00:30';
$record['catagory']='Study';
$record['content']='Do something fun...';
$recordlist[]=$record;
$record=Array();
$record['time']='2014-01-07 12:00:30';
$record['catagory']='Sport';
$record['content']='Bike';
$recordlist[]=$record;
$record=Array();
$record['time']='2014-12-15 12:00:30';
$record['catagory']='Sport';
$record['content']='Bike';
$recordlist[]=$record;
$record=Array();
$record['time']='2014-12-12 12:01:30';
$record['catagory']='Sport';
$record['content']='Bike';
$recordlist[]=$record;
?>
<?php
//output
//how to output just as http://jsfiddle.net/euj89/
// Refactor Array
foreach($recordlist as $record){
$date = explode(" ",$record['time']);
$hour = $date[1];
$date = $date[0];
$week = date("W",strtotime($date));
$month = date("F",strtotime($date));
$year = date("Y",strtotime($date));
$newRecordList[$year][$month][$week][$date][$hour]['time'] = $record['time'];
$newRecordList[$year][$month][$week][$date][$hour]['category'] = $record['catagory'];
$newRecordList[$year][$month][$week][$date][$hour]['content'] = $record['content'];
}
//OUTPUT
?><div class="tree"><ul><?
foreach ($newRecordList as $year => $recordByYear) {
foreach ($recordByYear as $month => $recordByMonth) {
foreach ($recordByMonth as $week => $recordByWeek) {
?><li><span><?=$year?>, Week <?=$week?> , date</span><ul><?
foreach ($recordByWeek as $day => $recordByDay) {
?><li><span><?=date("l",strtotime($day))?>, <?=$month?> <?=$day?> </span><ul><?
foreach ($recordByDay as $hour => $recordByHour) {
?><li><div class="record">
<span><?=$hour?></span><br>
<span><?=$recordByHour['category']?></span><br>
<span><?=$recordByHour['content']?></span><br>
</div></li><?
}
?></ul></li><?
}
?></ul></li><?
}
}
}
?></ul></div><?
输出应该是这样的: