我有这样的表:
ID Date Content
1 2016-07-29 content for july 29th
2 2016-07-30 content for july 30th
3 2016-08-01 content for august 1st
4 2016-08-02 content for august 2nd
我想要这样的结果:
2016年七月
2016年7月29日-7月29日的内容
2016年7月30日-7月30日的内容
2016年八月
2016年8月1日-8月1日的内容
2016年8月2日-8月2日的内容
我创建了手动的foreach循环来显示数据,如下所示:
我的模特:
public function get_july16(){
$this->db->select('*');
$this->db->from('table');
$this->db->where('month(date)','07');
$july16 = $this->db->get();
return $july16->result();
}
public function get_aug16(){
$this->db->select('*');
$this->db->from('table');
$this->db->where('month(date)','08');
$aug16 = $this->db->get();
return $aug16->result();
}
我的看法:
<h3>July 2016</h3>
<?php foreach($july16 as $e): ?>
<h4><?php echo $e->date;?></h4>
<div><?php echo $e->content;?></div>
<?php endforeach; ?>
<h3>August 2016</h3>
<?php foreach($aug16 as $e): ?>
<h4><?php echo $e->date;?></h4>
<div><?php echo $e->content;?></div>
<?php endforeach; ?>
我想知道是否有最简单的方法立即执行foreach
循环而不是一个一个地创建。
沃尔夫冈·1983年是对的。
但是这里有一个快速的解决方案,可以解决您的问题。(未验证)
(您可以使用<?=
代替<?php echo
)
$this->db->select('*');
$this->db->from('table');
$datas = $this->db->get()->result();
$months = [];
foreach ($datas as $d) {
$date = strtotime($d->date);
$actualMonth = date("F Y", $date); // get July 2016, August 2016...
$months[$actualMonth][$date] = $d; // Insert data into board
}
// loop into all months
foreach ($months as $month => $days) {
echo "<h3>$month</h3>"; // Display month
foreach ($days as $day) {
echo "<h4>".$day->date."</h4>";
echo "<div>".$day->content."</div>";
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句