PHP找到最近的数字

时间:2010-09-08 17:40:22

标签: php

如何找到哪个表格单元格包含最接近当前时间的时间?

使用PHP代码创建时间表,如:

for ($i = 1; $i <= 24; $i++)
  {
  $timetable=strftime("%X", mktime(0, 0, $hour[$i], $month, $day, $year));
  }

使用这个PHP代码,我得到当天的时间表,如:

   time   |
----------
 05:09:23 |
----------
 07:23:18 |
----------
 11:55:41 |
----------
 14:01:32 |
----------

我需要的是改变打印时间最接近当前时间的单元格的背景颜色。

Hos我可以这样做吗?

2 个答案:

答案 0 :(得分:2)

使用它来执行此操作:

$max = INF;
for ($i = 1; $i <= 24; $i++)
{
    $tabletime = mktime(0, 0, $hour[$i], $month, $day, $year);
    $timetable = strftime("%X", $tabletime);

    $diff = abs($tabletime - time());
    if($diff <= $max)
         $minID = $i;
}

现在$minID为您提供时差最小的行。

答案 1 :(得分:0)

创建两个临时变量。其中一个将是最近的单元格索引,下一个将是单元格索引的值与当前时间之间的差异。 (哦,并存储当前时间。这将使事情变得更容易。)

$nearestTime = null;
$nearestDifference = INF; // infinite
$now = time();

遍历你的细胞,并在它们的价值和现在之间做差异。如果它小于$nearestDifference,则时间更接近现在。

for ($i = 0; $i < count($cells); $i++)
{
    $time = strtotime($cells[i]); // or whatever is more appropriate for you
    $difference = abs($time - $now);
    if ($difference < $nearestDifference)
    {
        $nearestDifference = $difference;
        $nearestCell = $i;
    }
}

在此结束时,$nearestTime包含其值最接近的单元格的索引。