我真的需要帮助来显示一个月列表视图,在这个视图中,接受存款的月份应该是绿色的,而没有存款的月份应该是红色的。我一直在比较数组的值。我用的是代码点火器。
我有一个包含开始日期和结束日期的表,通过使用它,我创建了一个数组来显示这些日期之间的所有月份。请找出我在下面做的代码:
$datefrom = strtotime($showrangecalendar['chitdate_start']);
$dateto = strtotime($showrangecalendar['chitdate_end']);
$start_date = date('Y-m-d', $datefrom);
$end_date = date('Y-m-d', $dateto);
$day = 2.628e+6; // Day in Months
$format = 'Y-F'; // Output format (see PHP date funciton)
$sTime = strtotime($start_date); // Start as time
$eTime = strtotime($end_date); // End as time
$numDays = round(($eTime - $sTime) / $day) + 1;
$days = array();
for ($d = 0; $d < $numDays; $d++) {
$days[] = date($format, ($sTime + ($d * $day)));
}这段代码为我提供了日期列表,我已经使用foreach语句将其显示到一个表中。
现在,我有了另一个表(accounts),其中包含ID、Book_number、Deposit_Amount和Deposit_Month等列。从这里开始,我从“帐户”获取数据,并使用下面的代码从控制器加载到我的视图中。
$data['show_account']= $this->Accounts_model->get_all_accounts($sess_data);我的模型(Accounts_Model)如下所示:
public function get_all_accounts($id)
{
$this->db->select("*");
$this->db->order_by('book_id','desc');
$this->db->from("accounts");
$this->db->where('bh_id',$id);
$query = $this->db->get();
return $query->result();
}如果我运行下面的代码:
foreach($show_account as $values){
echo $values->deposit_month;
}它让我得到了所有存款月份的结果。假设我有2018-9和2018-Oct的数据,这两个月的列应该在上面提到的$days数组中变成绿色。
希望我已经清楚地解释了我的要求。请帮助我,因为我已经花了很长时间在这方面。
提前谢谢。
更新:
现在请您检查一下我的型号如下:
public function get_dep_month($bh_id)
{
$this->db->select('deposit_month');
$this->db->from('accounts');
$this->db->where('bh_id',$_SESSION['bh_id']);
$this->db->order_by('deposit_month','asc');
$query = $this->db->get();
return $query->result_array();
}我的主计长如下:
$sess_data = $this->session->userdata('bh_id');
$data['depM_array'] = $this->Accounts_model->get_dep_month($sess_data);现在请查看我的意见如下:
<?php
// option 2
foreach($days as $day) { // using your already exist $day for-loop for display
if (!in_array($day, $depM_array)){
$calhilight = "calgreen";
}
else{
$calhilight = "calred";
}
?>
<li class="<?php echo $calhilight; ?>"><?= $day ?></li>
<?php
}
?>但是,由于我的doposit_month专栏只有两个值,即:2018年9月和2018年10月,我不是为这两个值获取绿色,而是为who li元素获取绿色。不知道我做错了什么。
这是我正在获得的当前页面视图,实际上,我期待一个日历视图,其中包含2018年9月和2018年10月的2个绿色字段以及所有其他红色字段。
在数组中执行Var Dumb:
FYI:下面是我获取$days数组的代码。
<?php
$datefrom = strtotime($showrangecalendar['chitdate_start']);
$dateto = strtotime($showrangecalendar['chitdate_end']);
$start_date = date('Y-m-d', $datefrom);
$end_date = date('Y-m-d', $dateto);
$day = 2.628e+6; // Day in Months
$format = 'Y-F'; // Output format (see PHP date funciton)
$sTime = strtotime($start_date); // Start as time
$eTime = strtotime($end_date); // End as time
$numDays = round(($eTime - $sTime) / $day) + 1;
$days = array();
for ($d = 0; $d < $numDays; $d++) {
$days[] = date($format, ($sTime + ($d * $day)));
}?>
在这里,$start_date & $end_date从另一个名为拨款的表中提取。
再次感谢。
发布于 2019-01-29 16:34:20
您可以使用阵列差或简单的for-loop。
考虑以下简单示例:
$days = array("2018-September", "2018-October", "2018-November", "2018-December");
$deposit_month = array("2018-September", "2018-October");
// option 1:
$diff = array_diff($days, $deposit_month);
// now $diff has: "2018-November" and "2018-December"
// option 2
foreach($days as $day) { // using your already exist $day for-loop for display
if (!in_array($day, $deposit_month))
// color in red as not found in "deposit_month"
else
// color in green
}为该if编写的更好的内容如下:
$color = in_array($day, $deposit_month) ? "Green" : "Red";https://stackoverflow.com/questions/54424562
复制相似问题