我正在使用的WordPress插件输出一个数组(应该只有两个日期/时间),如下所示:
Array ( [0] => 1412037900 [1] => 1413340200 [2] => )
我不确定为什么会有一个尾随的空节点,但无论如何,我都试图从中获取格式化的日期/时间列表。
我在我的php中有这个(get_post_meta函数返回数组):
<?php global $post;
$date = get_post_meta( $post->ID, '_cmb2_date_time', true );
foreach ( $date as $item ) {
echo '<p>' . date("F j, Y, g:i a", (int)$item) . '</p>';
} ?>
现在我得到了这个:
September 30, 2014, 12:45 am
October 15, 2014, 2:30 am
January 1, 1970, 12:00 am
我想要的是这个:
September 30, 2014, 12:45 am
October 15, 2014, 2:30 am
最终我还想让它成为有条件的,以便它回应&#34; TBA&#34;什么时候没有约会。我可以稍后担心它会工作但是当数组为空时我得到一个错误,上面写着&#34;警告:为foreach()提供的参数无效...&#34;
非常感谢任何帮助!
答案 0 :(得分:4)
最后一个结果是dateix equivelant为0 unix时间,因为在数组末尾有一个空对象。只需在转换之前删除(弹出)最后一个对象:
<?php global $post;
$date = get_post_meta( $post->ID, '_cmb2_date_time', true );
array_pop($date);
foreach ( $date as $item ) {
echo '<p>' . date("F j, Y, g:i a", (int)$item) . '</p>';
} ?>
然后,要包含TBA功能:
<?php global $post;
$date = get_post_meta( $post->ID, '_cmb2_date_time', true );
//If you are still getting an extra object even when there are no dates to be passed
//from get_post_meta then pop before the check if empty
array_pop($date);
if( empty( $date ) )
{
echo '<p>TBA</p>';
}
else
{
//If you are not getting the extra object when empty, only when there are results
//then put the pop here before the foreach loop
foreach ( $date as $item ) {
echo '<p>' . date("F j, Y, g:i a", (int)$item) . '</p>';
}
}
?>
答案 1 :(得分:0)
date()
将输出当前日期和时间,因此请使用此代码;
foreach ( $date as $item ) {
if($item) echo '<p>' . date("F j, Y, g:i a", (int)$item) . '</p>';
}
如果数组条目为空,则不会回显日期。
希望这有帮助。
答案 2 :(得分:0)
将foreach更改为
foreach ( $date as $item ) {
echo '<p>'.(empty($item)?"TBA":date("F j, Y, g:i a", (int)$item)).'</p>';
}