首页 / PHP / PHP – Foreach和比较日期
PHP – Foreach和比较日期
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP – Foreach和比较日期,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3470字,纯文字阅读大概需要5分钟。
内容图文
![PHP – Foreach和比较日期](/upload/InfoBanner/zyjiaocheng/699/0864cb8e56974a7daa0b631d7879b889.jpg)
您好我已经预测了数据库中事件的数据,我在数据库中使用日期一个名称,例如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.
希望这可以帮助
内容总结
以上是互联网集市为您收集整理的PHP – Foreach和比较日期全部内容,希望文章能够帮你解决PHP – Foreach和比较日期所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。