使用代码点火器检查结果数组中的任何值是否与现有数组的值相似



我真的需要帮助来显示一个月份列表视图,在该视图中,收到存款的月份应该是绿色,而没有存款的月份则应该是红色。我一直在比较数组值。我正在使用codeigniter。

我有一个包含开始日期和结束日期的表。通过使用它,我创建了一个数组来显示这些日期之间的所有月份。请在下面找到我用来做这件事的代码:

$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)));  
}

这段代码为我提供了Days列表,我使用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年10月的数据,在上面提到的$days数组中,这2个月的列应该变成绿色。

希望我已经把我的要求解释清楚了。请帮我做这件事,因为我已经花了很长时间了。

提前感谢。

更新时间:

现在你可以检查一下我的型号如下:

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月,我没有为这两个值获取绿色,而是为wholi元素获取绿色。没有达到我做错的地方。

这是我得到的当前页面视图,实际上我期待着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正在从另一个名为chitdate的表中获取。

再次感谢。

您可以使用数组diff或简单的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";

相关内容

  • 没有找到相关文章

最新更新