Таймер обратного отсчета уходит в отрицательные числа

Спасибо за помощь!

Извините, мой опыт написания кода очень прост, и я медленно учу себя. Меня смущает, почему этот обратный отсчет при достижении 0 переходит в минус числа, а затем начинает считать.

Ака, это в настоящее время на -3 минуты и -41 секунды.

Я хочу сказать «НЕТ», когда он достигает 0.

<?
function protectup ($online){
global $time;

$difference=$online-$time;
$num = $difference/86400;
$days = intval($num);
$num2 = ($num - $days)*24;
$hours = intval($num2);
$num3 = ($num2 - $hours)*60;
$mins = intval($num3);
$num4 = ($num3 - $mins)*60;
$secs = intval($num4);

if($days != 0){echo"$days days, ";}
if($hours != 0){echo"$hours hours, ";}
if($mins != 0){echo"$mins minutes and ";}
if($secs != 0) {echo"$secs seconds"; }else{echo"None";}
} ?>

<?=protectup($protect)?>

Спасибо за помощь!

0

Решение

Вы можете оставить время без секунды
Вы должны добавить каждую часть с комой и, и, наконец,

<?

function protectup ($online) {
global $time;

$difference=$online-$time;
if ($difference <= 0) {
echo"None\n";
return;
}
$num = $difference/86400;
$days = intval($num);
$num2 = ($num - $days)*24;
$hours = intval($num2);
$num3 = ($num2 - $hours)*60;
$mins = intval($num3);
$num4 = ($num3 - $mins)*60;
$secs = intval($num4);

$out = array();
if($days != 0){$out[] ="$days days";}
if($hours != 0){$out[] = "$hours hours";}
if($mins != 0){$out[] = "$mins minutes";}
if($secs != 0){$out[] = "$secs seconds";}

echo $out[0];
for ($i = 1; $i < count($out) - 1; $i++) {
echo(", ".$out[$i]);
}
if (count($out) > 1) {
echo(" and ".$out[count($out) - 1]);
}
echo(".\n");
}

protectup(123);
protectup(120);
protectup(124);
protectup(184);
protectup(424);
protectup(345184);
protectup(0);
protectup(24 * 3600 + 5);
protectup(24 * 3600 + 5 * 60);
?>

выход

2 minutes.
2 minutes and 3 seconds.
3 minutes and 4 seconds.
7 minutes and 3 seconds.
3 days, 23 hours, 53 minutes and 3 seconds.
None
1 days and 5 seconds.
1 days and 5 minutes.
1

Другие решения

Других решений пока нет …