如何从函数中输出 return

How can I output the return from a function

我有一个 Timeago 函数,但我不知道如何将 Timeago return 转换成一个变量,以便在我的网页上显示。我是 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' ";
}
?>

我已经设法让 "days 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' 的功能,就像您命名的那样,是工作的一半!让我们开始制作视图。有两种方法可以做到这一点:

  • 使视图像 classes.
  • 让视图像脚本一样。

作为 class 的观看次数:

假设您在 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 标签,并在结束 PHP 标签 ?> 之后在该标签外写纯 HTML。 class 将输出一个 <h1> 和 class 属性 $timeago 的值,因为它是一个 class 属性,你必须用 $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();

就是这样!现在让我们看看如何在没有 classes 的情况下做到这一点。

作为脚本查看

现在,无需创建 class,只需创建一个应该使用 $timeago 变量的简单脚本。我们将其命名为 'my_view.php':

<html>
      <head>
        <title>Timeago Example</title>
      </head>
      <body>
        <h1>Your timeago is: <?php echo $timeago; ?></h1>
      </body>
</html>

看看我们怎么只有一个回显 $timeago 的 PHP 标签?让我们看看我们如何使用您的代码来打印该视图,然后我将向您解释它为什么有效:

// 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 关键字。每次你 includeinclude_once 一个文件,就好像你在你的脚本中间直接复制和粘贴文件的内容,你猜怎么着......那个文件会知道所有的变量之前在同一个脚本中创建。

如今,人们使用模板来构建动态 HTML 视图,但如果您要继续使用纯 PHP,我强烈建议您使用 类,因为它们更易于维护,只需查看 __construct() 方法,您就会知道该特定视图使用的所有变量。