$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");
我想理解为什么标有星号(*)的行已经完成了? 谢谢
答案 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的列表。