На этом сайте Я нашел функцию для преобразования секунд в удобочитаемый формат, например:
3 недели, 2 дня, 1 час, 27 минут, 52 секунды
Я хочу перевести его на итальянский, поэтому я просто перевел ключи массива.Теперь функция выглядит так:
function secondsToHumanReadable($secs) {
$units = array(
'settimane' => 604800,
'giorni' => 86400,
'ore' => 3600,
'minuti' => 60,
'secondi' => 1
);
foreach ( $units as &$unit ) {
$quot = intval($secs / $unit);
$secs -= $quot * $unit;
$unit = $quot;
}
return $units;
}
Работает довольно хорошо, но есть небольшая проблема: в английском языке все множественные числа заканчиваются на одну букву меньше, но, к сожалению, в итальянском это не так, как вы можете видеть ниже..
English Italian
- weeks, week - settimane, settimana
- days, day - giorni, giorno
- hours, hour - ore, ora
- minutes, minute - minuti, minuto
- seconds, second - secondi, secondo
Я хочу найти решение для печати единичных ключей, когда значения равны == 1.
Я думал, что мог бы объединить массив с другим массивом, имеющим особые ключи, используя array_combine () .
$singular_units = array(
'settimana',
'giorno',
'ora',
'minuto',
'secondo'
);
print_r(array_combine( $singular_units, $units ));
/* print_r:
Array
(
[settimana] => 604800
[giorno] => 86400
[ora] => 3600
[minuto] => 60
[secondo] => 1
)
*/
Массив выше - это то, что мне нужно, но я не могу его использовать, так как просто не могу использовать другой foreach
.
$seconds = 12345*60; // just an example
$units = secondsToHumanReadable($seconds);
$time_string = '';
foreach ($units as $u => $v)
if (!empty($v))
$time_string.= $v.' '.$u.', ';
echo substr($time_string, 0, -2);
// 1 settimane, 1 giorni, 13 ore, 45 minuti
// this echo is not correct :( is expected to be like this:
// 1 settimana, 1 giorno, 13 ore, 45 minuti
Как я могу реализовать единственные слова?
Любая помощь действительно приветствуется!Заранее большое спасибо!