如何将数据库中的日期与日历树枝中的日期进行比较?

How to compare dates from the database with the dates in the calendar twig?

我想将数据库中的日期与日历中的日期进行比较。

在我的控制器中,我得到了所有日期:

$employments = $this->getDoctrine()->getRepository('Bundle:Employment')
            ->findActualEmployments();

$freedays = $this->getDoctrine()->getRepository('Bundle:FreeDays')
            ->findBy(array(), array('date'=>'asc' )  );
foreach($freedays as $free){
     $list_freedays[] = date('Y-m-d',strtotime($free->getDate()->format('Y-m-d')));
        }
$days = array();
    foreach($freedays as $free){
    for($i=1;$i<=$maxDay;$i++)
    {
        $days[$i] = array(
          "date" => date('Y-m-d',strtotime($year.'-'.$month.'-'.$i)), 
          "name_en" => date('D',strtotime($year.'-'.$month.'-'.$i)),
          "name_trans" => 'main.'.strtolower(date('D',strtotime($year.'-'.$month.'-'.$i))),
          "free_day" => $list_freedays
        );}}
return $this->render('Bundle:Holiday:index.html.twig',array(
        'employments'=>$employments,
        'days' => $days,
        'list_freedays' => $list_freedays,
        'form' => $form->createView()
         ));

在我的 Twig 中,我尝试比较如下日期:

<tbody>
            <tr>
                <th id="col2" align="center">
                    {% set time = "now"|date("U","Europe/Warsaw") %}

                    {{['main',date('2015-' ~ j ~ '-01') |date('F')|lower]|join('.')|trans({},'Bundle')}}
                </th>

        {% for number,day in days %}

                        {#mark weekend#}
                        {% if  day.name_trans   == 'SAT'  %}    

                            <th align="center" id="col4" > 

                        {%elseif day.name_trans  == 'SUN'%}
                            <th align="center" id="col4" >

                        {%elseif (day.date) == (day.free_day[3])%}
                            {{day.free_day[3]}}  
                            <th align="center" id="col4" >
                        {%else%} 
                            <th align="center" id="col3" >                                            
                        {% endif  %}      
                                 {# day content here #} 
                      {% if numday in range(1,daysInMonth) %}   
                              {{ numday }}
                              {%set numday = numday + 1 %}  

                              {{ day.name_trans }}</th>   

                       {%endif%}    
                      {%endfor%}

            </tr>
        </tbody>

如果在这一行“{%elseif (day.date) == (day.free_day[3])%}”中一切正常,我输入一个从 0 到 3 的数字,因为我有四个数组中的日期。如何与数组的所有日期进行比较,而不仅仅是一个。当我将此行更改为“{%elseif (day.date) == (day.free_day)%}”时出现错误 "Notice: Array to string conversion in..." 请帮忙

您可以尝试 in_array method:

//True if day.date is in day.free_day
{%elseif (in_array (day.date , day.free_day))%}

还有一个可选的布尔参数 strict,您可以根据需要将其设置为 true。这也使得检查数组中的项目也匹配类型。

我找到了一个非常简单的解决方案。我更改此行:

{%elseif (day.date) == (day.free_day[3])%}

对此:

{%elseif (day.date) in (day.free_day)%}

感谢帮助