Как я могу вывести возврат из функции - PullRequest
0 голосов
/ 29 января 2019

У меня есть функция 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}'>

, но я хотел бы также показать результат в часах.

1 Ответ

0 голосов
/ 29 января 2019

Дело в том, что с 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 (), вы будете знать все переменные, используемые этим конкретным представлением.

...