Как отредактировать implode, чтобы он присоединил значения к двум строкам?

В функции ниже возможного вывода возможно

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

Solutions Collecting From Web of "Как отредактировать implode, чтобы он присоединил значения к двум строкам?"

Я бы сделал что-то вроде:

 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.