我想在首页上为我的每篇文章添加发布时间的描述。因此,有一些内容是在不同的时间发布的,我想通过添加对发布日期的描述使其更加清晰。
但是我发现了一个复杂的问题。在下面的代码示例中,它会产生错误的时间。我尝试了几次,但是失败了。我是否仍可以使用此代码解决此问题,或者还有另一个更完美的代码。
PHP代码:
$sql = $DBcon->query("SELECT content, post_date FROM article");
$row = $sql->fetch_array();
$post_date = $row['post_date']; // 2019-06-01 16:29:07
function time_elapsed_string($datetime, $full = false) {
$now = new DateTime;
$ago = new DateTime($datetime);
$diff = $now->diff($ago);
$diff->w = floor($diff->d / 7);
$diff->d -= $diff->w * 7;
$string = array(
'y' => 'year',
'm' => 'month',
'w' => 'week',
'd' => 'day',
'h' => 'hour',
'i' => 'minute',
's' => 'second',
);
foreach ($string as $k => &$v) {
if ($diff->$k) {
$v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
} else {
unset($string[$k]);
}
}
if (!$full) $string = array_slice($string, 0, 1);
return $string ? implode(', ', $string) . ' ago' : 'just now';
}
do {
// .......
echo $row['content'];
echo time_elapsed_string( $post_date );
// .......
} while ($row = $sql->fetch_array());
以上代码对所有内容产生相同的时间。即使我的内容是在不同的时间制作的。显然这是错误的。那么如何解决呢?
答案 0 :(得分:0)
移动此行:
unique_ptr
在$post_date = $row['post_date']; // 2019-06-01 16:29:07
循环内,或如下所示,完全删除变量。
do ... while
答案 1 :(得分:-1)
尝试以下方式:
while($row = $result->fetch_assoc()) {
echo $row['content'];
}
用于循环::您需要在while循环中使用条件。 这是有关while循环的5个示例。签出https://www.w3schools.com/php/php_looping.asp