У меня есть функция Timeago, но я не знаю, как вернуть Timeago в переменную, которую я могу отобразить на моей веб-странице. Я очень новичок в PHP, и я взял функцию Timeago из сети, но я не знаю, как передать результат в переменную, которую я могу вывести на мою веб-страницу.
Код ниже …
<?php
$dateadded = $row['dateadded'];
$timeadded=$row['timeadded'];
Я хотел бы передать в функцию переменные выше из date('y-m-d');
а также time('h-i-s');
, но я не уверен, как это сделать, и, что более важно, как я могу отобразить это на моей странице в качестве переменной?
return "$difference $periods[$j] 'ago' ";
Спасибо за любую помощь …
function ago($time)
{
$periods = array("second", "minute", "hour", "day", "week", "month",
"year", "decade");
$lengths = array("60","60","24","7","4.35","12","10");
$now = time();
$difference = $now - $time;
$tense = "ago";
for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
$difference /= $lengths[$j];
}
$difference = round($difference);
if($difference != 1) {
$periods[$j].= "s";
}
return "$difference $periods[$j] 'ago' ";
}
?>
Мне удалось заставить «дни назад» работать с небольшим количеством кода, но я также хотел бы показать часы, если дни меньше 1 дня. Любая идея, как я могу адаптировать приведенный ниже код, чтобы показать в часах, если daysago
это 0?
$start = strtotime($dateadded);
$end = strtotime(date('y-m-d'));
$daysago = ceil(abs($end - $start) / 86400);
Я попробовал это, но это не сработало:
$hours = $daysago / ( 60 * 60 );
$mins = $hours /(60*60);
//if ($hours < 1) {$hours=$mins;}
//if ($daysago < 1) {$daysago = $hours; }
и я отображал результат в тег заголовка, как показано ниже:
<div id='contentimagegallery' class='contentimagegallery' style='z-index:1000;' title='{$daysago}'>
но я хотел бы показать результат и в часах.
Особенность PHP в том, что вы можете использовать данные, собранные на стороне сервера, для построения ваших представлений, которые будут отображаться на стороне клиента. Итак, из того, что я вижу в вашем коде, вы собираете данные, которые пользователь записывает во вход на вашей веб-странице, верно? Сбор данных и функция для вычисления «timeago», как вы его называете, — это половина работы! Давайте перейдем к просмотру крафта. Есть два способа сделать это:
Представьте, что в вашем PHP-скрипте есть алгоритм timeago, а также HTML-представление, возможно, с расширением .html. Давайте создадим представление, которое создается с параметром, который будет результатом вашей операции timeago:
<?php
class My_View{
var $timeago;
function __construct($timeago){
$this->timeago = $timeago;
$this->render();
}
function render(){
?>
<html>
<head>
<title>Timeago Example</title>
</head>
<body>
<h1>Your timeago is: <?php echo $this->timeago; ?></h1>
</body>
</html>
<?php
}
}
Просто довольно простой HTML, который создается с параметром (как говорит функция __constructor ()). Посмотри, как я открываю <?php
теги, когда это код PHP, и писать чистый HTML вне этого тега, после закрывающего тега PHP ?>
, Этот класс будет выводить <h1>
со значением атрибута класса $ timeago, и поскольку это атрибут класса, вы должны ссылаться на него с помощью $this->timeago
, Ваш код в конечном итоге будет выглядеть примерно так:
<?php
//Include your view
//Notice the .php extension!!
include __DIR__.'/../Views/My_View.php';
// Your stuff here
$timeago = ago($time); //this is your function
new My_View($timeago);
exit();
И это все! Давайте теперь посмотрим, как это сделать без занятий.
Теперь, вместо создания класса, просто создайте простой скрипт, который будет использовать переменную $ timeago. Мы назовем это my_view.php:
<html>
<head>
<title>Timeago Example</title>
</head>
<body>
<h1>Your timeago is: <?php echo $timeago; ?></h1>
</body>
</html>
Посмотрите, как у нас есть только тег PHP с эхом $ timeago? Давайте посмотрим, как мы могли бы использовать ваш код для печати этого представления, а затем я объясню вам, почему он работает:
// Do not include your View here
// Your stuff here
$timeago = ago($time); //this is your function
include __DIR__.'/../Views/my_view.php';
exit();
Итак, вопрос здесь … Если я создал скрипт с именем my_view.php, который печатает переменную $ timeago, почему он ее печатает? Этот скрипт не знает о существовании этой переменной. Это из-за include
ключевое слово. Каждый раз, когда вы include
или же include_once
файл, это как если бы вы копировали и вставляли содержимое файла прямо в середину вашего скрипта, и догадались, что … Этот файл будет знать обо всех переменных, созданных ранее в этом же скрипте.
В настоящее время люди используют шаблоны для создания динамических HTML-представлений, но если вы собираетесь продолжить работу с чистым PHP, я настоятельно рекомендую использовать классы, поскольку их проще поддерживать, и просто взглянув на метод __construct (), вы знать все переменные, используемые этим конкретным представлением.
Других решений пока нет …