2010-09-08 7 views
0

Comment puis-je trouver quelle cellule de table contient l'heure la plus proche de l'heure actuelle?PHP trouver le nombre le plus proche

Le tableau de temps est créé en utilisant le code PHP comme:

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

Avec ce code PHP Je reçois la table de temps pour la journée en cours comme:

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

La seule chose que j'ai besoin de changer la couleur de fond de la cellule où l'heure imprimée est la plus proche de l'heure actuelle.

Que puis-je faire?

Répondre

2

Utilisez cette option pour le faire:

$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; 
} 

maintenant $minID vous donne la ligne qui a la différence de temps le plus bas.

0

Créez deux variables temporaires. L'un d'entre eux sera l'indice de cellule le plus proche, le prochain sera la différence entre la valeur de l'index de cellule et l'heure actuelle. (Oh, et stocker l'heure actuelle ainsi. Il sera plus facile.)

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

boucle à travers vos cellules, et faire la différence entre leur valeur et maintenant. Si c'est plus petit que $nearestDifference, le temps est plus proche de maintenant.

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; 
    } 
} 

A la fin de ce, $nearestTime contient l'index de la cellule dont la valeur est la plus proche maintenant.

Questions connexes