2011-11-12 109 views
0

我的目标是让它看看帖子是否允许评论,如果确实如此,那么请检查以确保date_comments_expires不在通过的日期之前。我不太清楚如何完成这个如果陈述。任何帮助?比较日期到if语句

if ($mainNews[0]['allow_comments'] == 'Yes' AND $mainNews[0]['date_comments_expire'] ==) { 

编辑:

这里是我更新的代码中,我得到非对象的成员函数getTimeStamp通话

if ($mainNews[0]['allow_comments'] == 'Yes' AND $mainNews[0]['date_comments_expire']->getTimestamp() > time()) { 
        echo "<a href=\"#\"></a><span>".$mainNews[0]['number_of_comments']."</span>"; 
       }  
+0

你错过的东西'] ==)'? –

+1

@Book:我认为这是“我不太清楚如何完成这个if语句”部分,他不知道在最后一个'=='之后应该放什么。 –

+4

'$ mainNews [0] ['date_comments_expire']'包含了什么? – str

回答

2

这完全取决于什么是包含在date_comments_expire指数内你的数组。我希望它可以是unix时间戳,说明评论何时到期,或者是其合理的文本解释。

如果您使用的是unix时间戳,那么您的表现非常好。如果是文本,那么在继续之前,您需要将其转换为unix时间戳。最好的功能是strtotime()。它可以解析各种文本日期时间表示,并将结果返回一个unix时间戳。

将端点表示为时间戳后,您可以将其与当前时间进行比较。为此,您可以使用time()函数,该函数将当前时间作为unix时间戳记返回。

由于unix时间戳只是整数(具体而言,是1970年1月1日以来的秒数),所以这是一个简单的比较。

最后,你的代码应该是这样的:

// convert to timestamp if necessary, remove if unneeded 
$commentExpiry == strtotime($mainNews[0]['date_comments_expire']); 

if ($mainNews[0]['allow_comments'] == 'Yes' AND 
    $commentExpiry > time()) { 
    //submit comments 
} else { 
    //error handling 
} 
+0

如果date_comments_expire字段是日期时间格式,该怎么办? –

+0

@JeffDavidson你的意思是它是一个PHP日期时间对象?在这种情况下,可以使用DateTime :: getTimestamp()获取Unix时间戳,并如上所述进行比较。基本上,该条件的一部分变成'$ mainNews [0] ['date_comments_expire'] - > getTimestamp()> time()' – AgentConundrum

+0

我更新了我的代码。 –