добавить время в формате h: i: s

У меня есть массив, как показано ниже:

array
(
    [0] => 505:25:32
    [1] => 480:00:01
    [2] => 504:00:01
    [3] => 480:00:02
)

Я хочу добавить его и получить общее время в h: i: s . Я подумал о том, чтобы разделить этот массив на три

hour_array(
        [0] => 505
        [1] => 480
        [2] => 504
        [3] => 480
)
min_array(
        [0] => 25
        [1] => 00
        [2] => 00
        [3] => 00
)
sec_array(
        [0] =>32
        [1] => 01
        [2] => 01
        [3] => 02
)

затем добавьте каждый массив индивидуально и суммируйте их позже. но это решение кажется немного длинным, там есть другое решение

0

5 ответы

<?php
$original_array = array
(
        '505:25:32',
        '480:00:01',
        '504:00:01',
        '480:00:02'
);

$hours=0;
$minutes=0;
$seconds=0;
foreach($original_array AS $value){
    $chunks= explode(":", $value);
    $hours += $chunks[0];
    $minutes += $chunks[1];
    $seconds += $chunks[2];
}

$minutes += floor($seconds/60);
$seconds %= 60;

$hours += floor($minutes /60);
$minutes %= 60;

var_dump(get_defined_vars());
?>
1
добавлено
<?php
$original_array = array
(
        '505:25:32',
        '480:00:01',
        '504:00:01',
        '480:00:02'
);

$hours=0;
$minutes=0;
$seconds=0;
foreach($original_array AS $value){
    $chunks= explode(":", $value);
    $hours += $chunks[0];
    $minutes += $chunks[1];
    $seconds += $chunks[2];
}

$minutes += floor($seconds/60);
$seconds %= 60;

$hours += floor($minutes /60);
$minutes %= 60;

var_dump(get_defined_vars());
?>
1
добавлено

Если вы все равно будете разбирать строки, тогда вы можете просто добавить к итоговым значениям:

$totalHours = 0;
$totalMinutes = 0;
$totalSeconds = 0;
for($i = 0; $i < count($times); $i++)
{
   $parsedTime = FunctionToParseStringIntoTime($times[$i]);
   $totalHours += $parsedTime['hours'];
   $totalMinutes += $parsedTime['minutes'];
   $totalSeconds += $parsedTime['seconds'];
}

I've been using the function from here recently, Convert time to seconds

Это даст вам общие минуты. Чтобы он дал ассоциативный массив, я бы сделал что-то вроде этого:

function FunctionToParseStringIntoTime($theTime) 
 {
    $t = explode(':', $theTime);
    return array("hours" => intval($t[0]), "minutes" => intval($t[1]), "seconds" => intval($t[2]));
 }
0
добавлено
но в течение этих минут и секунд может наступить более 60 минут и 60 секунд, поэтому я должен добавить его в часах и секундах
добавлено автор Tarika, источник

foreach в вашем исходном массиве

$hours= array();
$min= array();
$sec= array();
foreach($original_array AS $key=> $value){
  $chunk= explode(":", $value);
  $hour[$key]= $chunk[0];
  $min[$key]= $chunk[1];
  $sec[$key]= $chunk[2];
}
0
добавлено

Попробуйте использовать многомерный массив.

Это должно сделать вашу работу легкой и более читаемой.

Вы можете добавить «:» только на дисплей.

0
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp