- floor: documentation ( source)
- array_pop: documentation ( source)
- join: documentation ( source)
<?php
function secondsToString($seconds) {
$units = ['day' => 86400, 'hour' => 3600, 'minute' => 60, 'second' => 1];
$parts = [];
foreach ($units as $name => $duration) {
$div = floor($seconds / $duration);
if ($div == 0) {
continue;
}
$parts[] = $div == 1 ? "{$div} {$name}" : "{$div} {$name}s";
$seconds %= $duration;
}
$last = array_pop($parts);
return empty($parts) ? $last : join(', ', $parts) . " and " . $last;
}
echo secondsToString(245);