Хорошо, я понимаю, что функцию можно создать только один раз, но мне нужно использовать вывод значения из массива, чтобы выполнить функцию 3 раза на одной и той же странице. Я настроил его так, как я думал, что он должен работать, но php просто создает пустую страницу. Вот оригинальная функция до того, как я ее использовал:
function time_ago($date,$granularity=2) {
$date = strtotime($date);
$difference = time() - $date;
$periods = array('decade' => 315360000,
'year' => 31536000,
'month' => 2628000,
'week' => 604800,
'day' => 86400,
'hour' => 3600,
'minute' => 60,
'second' => 1);
if ($difference < 5) { // less than 5 seconds ago, let's say "just now"
$retval = "posted just now";
return $retval;
} else {
foreach ($periods as $key => $value) {
if ($difference >= $value) {
$time = floor($difference/$value);
$difference %= $value;
$retval .= ($retval ? ' ' : '').$time.' ';
$retval .= (($time > 1) ? $key.'s' : $key);
$granularity--;
}
if ($granularity == '0') { break; }
}
return ' posted '.$retval.' ago';
}
}
тогда вот мой основной цикл, предназначенный для извлечения твитов из базы данных и преобразования метки времени в unix time:
$sql = $db->select("SELECT * FROM `Twitter_tweets` ORDER BY `id` DESC LIMIT 0, 3");
while($res = $db->get_row($sql))
{
$p .= '
<li>
<span class="tweetContent">'.display_clean($res['tweet']).'</span>
<br />
<span class="tweetDate">';
$timeSince = ceil(abs(display_clean($res['created_at']) - time()) / 86400);
$p .= ''.$timeSince.'</span>
</li>
';
}
Идея следующего раздела кода состоит в том, чтобы взять дату в базе данных, преобразовать ее в unixtime, найти разницу между ними, а затем вывести ее как «опубликовано x минут назад», в виде facebook / twitter и т. Д.
//loop section converting date to 'posted x time ago'
$sql = $db->select("SELECT * FROM `Twitter_tweets` ORDER BY `id` DESC LIMIT 0, 3");
function time_ago($date,$granularity=2) {
$date = strtotime($date);
$difference = time() - $date;
$periods = array('decade' => 315360000,
'year' => 31536000,
'month' => 2628000,
'week' => 604800,
'day' => 86400,
'hour' => 3600,
'minute' => 60,
'second' => 1);
}
while($res = $db->get_row($sql))
{
$p .= '
<li>
<span class="tweetContent">'.display_clean($res['tweet']).'</span>
<br />
<span class="tweetDate">';
$date = display_clean($res['created_at']);
if ($difference < 5) { // less than 5 seconds ago, let's say "just now"
$retval = "posted just now";
return $retval;
} else {
foreach ($periods as $key => $value) {
if ($difference >= $value) {
$time = floor($difference/$value);
$difference %= $value;
$retval .= ($retval ? ' ' : '').$time.' ';
$retval .= (($time > 1) ? $key.'s' : $key);
$granularity--;
}
if ($granularity == '0') { break; }
}
return ' posted '.$retval.' ago';
}
$p .= '</span>
</li>
';
}
//end loop
Может кто-нибудь указать, где я иду не так? Я в порядке с использованием PHP, но я не эксперт в любом случае. Я просто не могу понять, где я ошибаюсь и вырываю пустой файл.