0

私は以下のような配列を持っています:

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

私はそれを追加して合計時間を取得したいh:i:s。この配列を3つに分割することを考えました

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
)

次に、各配列を個別に追加し、後で合計します。しかし、この解決策は少し長いようですが、別の解決策があります

4

4 に答える 4

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());
?>
于 2013-02-07T08:56:29.597 に答える
0

とにかく文字列を解析する場合は、次のように合計に追加できます。

$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'];
}

ここ最近、時間を秒に変換する機能を使っています。

これにより、合計分が得られます。連想配列を与えるには、次のようにします。

function FunctionToParseStringIntoTime($theTime) 
 {
    $t = explode(':', $theTime);
    return array("hours" => intval($t[0]), "minutes" => intval($t[1]), "seconds" => intval($t[2]));
 }
于 2013-02-07T08:45:02.143 に答える
0

元の配列の 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];
}
于 2013-02-07T08:45:27.437 に答える
0

多次元配列を使用してみてください。

これにより、作業が簡単になり、コードが読みやすくなります。

「:」を追加できるのは表示のみです。

于 2013-02-07T08:45:42.017 に答える