В функции ниже возможного вывода возможно
1 day and 2 hours and 34 minutes
Мой вопрос в том, как мне редактировать implode, чтобы он выводил
1 day, 2 houts and 34 minutes
Это моя функция
function time_difference($endtime){ $hours = (int)date("G",$endtime); $mins = (int)date("i",$endtime); // join the values $diff = implode(' and ', $diff); if (($hours == 0 ) && ($mins == 0)) { $diff = "few seconds ago"; } return $diff; }
Я бы сделал что-то вроде:
if ($days) { $diff .= "$days day"; $diff .= $days > 1 ? "s" : ""; } if ($hours) { $diff .= $diff ? ", " : ""; $diff .= "$hours hour"; $diff .= $hours > 1 ? "s" : ""; } if ($mins) { $diff .= $diff ? " and " : ""; $diff .= "$mins minute"; $diff .= $mins > 1 ? "s" : ""; }
Что-то вроде этого?
function implodeEx($glue, $pieces, $glueEx = null) { if ($glueEx === null) return implode($glue, $pieces); $c = count($pieces); if ($c <= 2) return implode($glueEx, $pieces); $lastPiece = array_pop($pieces); return implode($glue, array_splice($pieces, 0, $c - 1)) . $glueEx . $lastPiece; } $a = array('a', 'b', 'c', 'd', 'e'); echo implodeEx(',', $a, ' and ');
Есть много мест для функций x-time-ago. вот два в PHP. Вот один из Javascript.