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


I am new to php and I need help understanding this code

$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");

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

让我们反过来开始。假设您想以秒为单位表示时间跨度(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 仅计算不能表示为天(整数(的秒数。
下一步处理所有可以表示为(整数(小时的秒,并再次从剩余秒中减去它们,依此类推。

这些是赋值运算符,这里是 php 中所有运算符的列表。