我有一个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}'>
但是我也希望能够在数小时内显示结果。
答案 0 :(得分:1)
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。该类将输出一个具有类属性$ timeago的值的<h1>
,并且由于它是一个类属性,因此必须使用$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>
看看我们如何只有一个带有$ timeago回显的PHP标记?让我们看看如何使用您的代码来打印该View,然后我将向您解释为什么它起作用:
// 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()方法,您将知道该特定View使用的所有变量。