PHP日期:根据新闻发布时间设置三元运算


PHP date: set up ternary operation based on when news story was posted

PHP非常新,只是尝试为新闻提要页面设置一个三元语句。

目标:

如果故事的发布日期超过24小时,请显示发布日期前的天数。也就是说,如果这个故事是48小时前发布的,那就两天播出。

否则,如果故事的发布日期在过去24小时内,则显示发布前的小时数。如果是9小时前发布的,显示9小时。

我当前的代码是:

foreach($result as $news_item)
{
$news_item_timestamp = strtotime($news_item["DateInserted"]);
$just_updated = ((time() - $news_item_timestamp) < 3600) ? "<span class='just_updated'>NEW</span>" : "";
$link = "news-details.php?news_item_id=".$news_item["NewsItemId"]."&feed=".$news_item["FeedId"];
echo "<a href='$link'><div class='news_item'>";
echo "<div class='headline'>$just_updated ".$news_item["Headline"]."</div>";
//the line below is the code in question
echo "<div class='dateline'>".date("l, F j, Y", $news_item["ThisRevisionCreated"])."</div>";
echo "</div></a><div class='cleardiv'></div>";
}

正如你所看到的,没有三元运算符的设置。但我假设第8行是我需要投一个的地方。

欢迎提出任何建议。

在PHP中,与大多数编程语言一样,您需要一直在头脑中运行这样的逻辑程序。解决这个问题的步骤通常遵循三个步骤:

  1. 知道自己想要什么这是你基本上为我们制定的步骤。你想要一个相对的日期系统。时间戳将转换为自提交帖子以来的小时数或自提交帖子后的天数
  2. 思考逻辑这通常是最关键的一步。一旦你知道自己想要什么,有时就很难在实际代码中准确地确定你想要执行的内容。有时,利用伪代码可以帮助您完成这一步骤
  3. 对其进行编程。这是您的逻辑在编辑器中显示出来的地方。偶尔,你可能需要重新调整,但如果你已经把一切都想清楚了,这一步就不需要那么难了

既然您已经考虑了第一步,那么下一步就是思考逻辑是如何通过现实生活中的代码实现的。设置一个psuedo代码示例,我会做如下操作。

if timeElapsed < 24 hours
    print hoursElapsed
else
    print daysElapsed

请注意,我们没有完全设置三元运算符,但我们有最低限度的运算符,可以很容易地将上面的运算符转换为PHP,并适合您已经设置的代码环境。仔细想想,我们有一些变量需要定义,但我们可以在PHP:中做到这一点

$elapsedTime = time() - $news_item_timestamp; //difference in time from post to now
$relativeDate = ($elapsedTime < 86400) ? round($elapsedTime/3600) . " minutes ago" : round($elapsedTime / 86400) . " days ago";
// 86400 seconds = 60 seconds * 60 minutes * 24 hours = 1 day
// 3600 seconds = 60 seconds * 60 minutes = 1 hour
if ($just_updated > 24*60*60)? echo (intval($just_updated/3600*24)):echo ($just_updated/3600)

如果更新时间>24小时,则回显更新时间/天数(即24*3600)else echo更新时间/小时数(这是3600)

简单答案

以下是我对三元的理解。

echo ($just_updated > 24*60*60) ? ((int)($just_update / 24*60*60)).' days ago.' : ((int)($just_updated /3600)).' hours ago';

我喜欢把我的东西分组,只是为了确定我在做什么。希望这就是你想要的。