我是php的新手,我需要帮助理解这段代码

时间:2013-12-02 10:05:54

标签: php

$ep1 = mktime(19,32,56,5,10,1965);

$ep2 = mktime(4,29,11,11,20,1962);
echo($ep2);
$diff_seconds = $ep1 - $ep2;

$diff_weeks = floor($diff_seconds/604800); // 128 
*$diff_seconds -= $diff_weeks * 604800;

$diff_days = floor($diff_seconds/86400);
*$diff_seconds -= $diff_days * 86400;


$diff_hrs = floor($diff_seconds/3600);
*$diff_seconds -= $diff_hrs * 3600;

$diff_mins = floor($diff_seconds/60);
*$diff_seconds -= $diff_mins * 60;
echo('<br>');
echo("Difference = $diff_weeks,$diff_days,$diff_hrs,$diff_mins");

我想理解为什么标有星号(*)的行已经完成了? 谢谢

2 个答案:

答案 0 :(得分:3)

让我们从另一个方向开始。 假设你要表达时间跨度(3天)+(17小时)+(47分钟)+ 13秒(秒)。那将是(没有闰秒等)

(3*86400) + (17*3600) + (47*60) + 13
= 259200 + 61200 + 2820 13
= 323233 (=$diff_seconds)

现在让我们来看看脚本的作用(我们跳过几周,从几天开始)

$diff_days = floor($diff_seconds/86400);
= floor(323233/86400);
= floor(3,7...);
= 3

$diff_seconds -= $diff_days * 86400;
$diff_days * 86400 = 259200 <-- see? That's the first factor in (3*86400) + (17*3600) + (47*60) + 13

那些259200已经“被处理”了,因此它们将从仍待处理的秒数中减去。之后$ diff_seconds只计算不能表示为天数的秒数(以整数表示) 下一步处理所有可以表示为(整数)小时的秒数,然后再从剩余的秒数中减去它们,依此类推。

答案 1 :(得分:1)

这些是Assignment operators,这里是php中所有operators的列表。