首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查结果数组中是否有与现有数组的值类似的代码点火器值。

检查结果数组中是否有与现有数组的值类似的代码点火器值。
EN

Stack Overflow用户
提问于 2019-01-29 15:36:54
回答 1查看 238关注 0票数 0

我真的需要帮助来显示一个月列表视图,在这个视图中,接受存款的月份应该是绿色的,而没有存款的月份应该是红色的。我一直在比较数组的值。我用的是代码点火器。

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

代码语言:javascript
复制
$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等列。从这里开始,我从“帐户”获取数据,并使用下面的代码从控制器加载到我的视图中。

代码语言:javascript
复制
$data['show_account']= $this->Accounts_model->get_all_accounts($sess_data);

我的模型(Accounts_Model)如下所示:

代码语言:javascript
复制
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();
}

如果我运行下面的代码:

代码语言:javascript
复制
foreach($show_account as $values){

  echo $values->deposit_month;
 }

它让我得到了所有存款月份的结果。假设我有2018-9和2018-Oct的数据,这两个月的列应该在上面提到的$days数组中变成绿色。

希望我已经清楚地解释了我的要求。请帮助我,因为我已经花了很长时间在这方面。

提前谢谢。

更新:

现在请您检查一下我的型号如下:

代码语言:javascript
复制
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();
}

我的主计长如下:

代码语言:javascript
复制
$sess_data = $this->session->userdata('bh_id');
    $data['depM_array'] = $this->Accounts_model->get_dep_month($sess_data);

现在请查看我的意见如下:

代码语言:javascript
复制
 <?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数组的代码。

代码语言:javascript
复制
 <?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从另一个名为拨款的表中提取。

再次感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-29 16:34:20

您可以使用阵列差或简单的for-loop

考虑以下简单示例:

代码语言:javascript
复制
$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编写的更好的内容如下:

代码语言:javascript
复制
$color = in_array($day, $deposit_month) ? "Green" : "Red";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54424562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档