PHP – Foreach和比较日期

您好我已经预测了数据库中事件的数据,我在数据库中使用日期一个名称,例如event_date.我需要比较相同的动作和一个div中的相同日期和输出.

例如,我有这个事件.

Event one – 13 Sep

Event two – 01 Sep

Event three – 13 Sep

我需要输出

<div class="event_head">
        <span>Event one</span>
        <span>13 Sep</span>
        <br/>
        <span>Event three</span>
        <span>13 Sep</span>
</div>

这是foreach的条件

if($date == $date){
    ?>

    <div class="event_head">
        <span><?PHP echo $name_event?></span>
        <span><?PHP echo $date;?></span>
        <br/>
    </div>

    <?PHP

}else{
    echo $date;
}
    ?>

这是行不通的,有些方法可以用这种方式比较一下吗?

谢谢(对不起我的英文)

编辑:
我使用ACF专业版,我在一个div中需要相同的事件输出并创建类似日历的东西.所以这是真正的代码

<?PHP 

$posts = get_posts(array(
    'post_type' => array('town1_event', 'town2_event'),
    'Meta_key'  => 'datum_eventu',
    'orderby'   => 'Meta_value_num',
    'order'     => 'ASC'
));

if( $posts ) {

    foreach( $posts as $post ) {

        //$datum = get_field("datum_eventu");
        //$nazev = get_field("nazev_eventu");

        $date = get_field('datum_eventu', false, false);    
        $date = new DateTime($date);

        //echo $date->format('j M');
        //echo $date->format('j M Y')

        //echo $datum;

        ?>

        <?PHP
        if($date->format('jM') == $date->format('jM')){
        ?>
        <div class="calendar_head">
        <span><?PHP echo $nazev?></span><br/>
        <span><?PHP echo $date->format('jM');?></span>
        </div>
        <?PHP   
        }else{
        echo "<br/>";
        echo $datum;
        }
    }

    wp_reset_postdata();

}
?>

EDIT2:
最终输出

22 JUL              | 25 JUL
EVENT 1     EVENT 2 | EVENT 3

EDIT3(已解决):

$the_query = new WP_Query( array(
    'post_type'   => array('town1_event','town2_event'),
    'post_status' => 'publish',
    'Meta_key'    => 'datum_eventu',
    'orderby'     => 'Meta_value_num',
    'order'     => 'ASC'
) );

# This will hold what group we're in
$current_header = '';

# The Loop
while ( $the_query->have_posts() ) :
    $the_query->the_post();

    # get the datum for this post
    $temp_date = get_post_meta( get_the_ID(), 'datum_eventu', true );

    # If they aren't the same, we'll start a new group, which for Now
    # just means setting a new heading
    if ( $temp_date != $current_header ) {
        $current_header = $temp_date;
        $old_date = date($current_header);             
        $old_date_timestamp = strtotime($old_date);
        $new_date = date('d. M', $old_date_timestamp); 
        echo "<h2>$new_date</h2>";

    }
    $nazev = get_field("nazev_eventu");
        echo $nazev;
        echo "<br/>";
    # ... do normal loop stuff here

endwhile;

我在Matthew Boynes的不同页面上找到了这个解决方案:)

解决方法:

您可以使用usort并创建自己的自定义函数获取结果并过滤它们.

<?PHP    
$events = array(
    'event1' => array(
        'event_name' => 'Title for Event 1',
        'event_date' => '2017-11-1'
    ),
    'event3' => array(
        'event_name' => 'Title for Event 1',
        'event_date' => '2017-10-13'
    ),
    'event4' => array(
        'event_name' => 'Title for Event 1',
        'event_date' => '2017-11-10'
    ),
    'event2' => array(
        'event_name' => 'Title for Event 1',
        'event_date' => '2017-10-22'
    ),
);

function date_compare($a, $b)
{ 
    // note that the variables are calling for the date part of the array
    // if you are using assoc array from MysqL just change the value
    // to your row name
    $t1 = strtotime($a['event_date']);
    $t2 = strtotime($b['event_date']);
    return $t1 - $t2;
}    
usort($events, 'date_compare');
print_r($events);

你的输出应该是:

Array
(
    [0] => Array
        (
            [event_name] => Title for Event 1
            [event_date] => 2017-10-13
        )

    [1] => Array
        (
            [event_name] => Title for Event 1
            [event_date] => 2017-10-22
        )

    [2] => Array
        (
            [event_name] => Title for Event 1
            [event_date] => 2017-11-1
        )

    [3] => Array
        (
            [event_name] => Title for Event 1
            [event_date] => 2017-11-10
        )

)

我从this answer获得了这个功能.回答者,Ferdinand Beyer.

希望这可以帮助

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...