0

インタイムとアウトタイムのセットがあり、インタイムとアウトタイムの間の期間を計算し、すべての期間を加算して合計期間を取得したいと考えています。
例:

Array
    (
    [1] => Array
        (
            ['intime'] => 1342086993
            ['outime'] => 1342087585
        )

    [3] => Array
        (
            ['intime'] => 1342087669
            ['outtime] => 1342096165
        )

    [5] => Array
        (
            ['intime'] => 1342096339
            ['outime'] => 1342096345
        )
    )

$total_duration = 0;
foreach($logArray as $log)
{
  $duration = $log['outime'] - $log['intime'];
  $total_duration += $duration;
}

$duration_hrs = $total_duration/3600;
echo 'Time spend in hrs :'.$duration_hrs;

しかし、これは私に適切な期間を与えていません。そうする他の方法はありますか?

4

4 に答える 4

2

array_mapを使用して、最初に各要素を期間にマップし、次にarray_sumを使用してそれらを合計します。

$durations = array_map(function ($e) {
  return $e['outtime'] - $e['intime'];
}, $logArray);
$total_duration = array_sum($durations);
于 2012-07-13T11:05:25.350 に答える
0

あなたの構文のないスクリプトは、私のためにうまく機能します:

<?php

    $logArray = Array (
        1 => Array (
            'intime' => 1342086993,
            'outime' => 1342087585
        ),
        3 => Array (
            'intime' => 1342087669,
            'outime' => 1342096165
        ),
        5 => Array (
            'intime' => 1342096339,
            'outime' => 1342096345
        )
    );

    $total_duration = 0;
    foreach( $logArray as $log ) {
      $duration = $log[ 'outime' ] - $log[ 'intime' ];
      $total_duration += $duration;
        echo $duration / 3600 . "<br />";
    }

    $duration_hrs = $total_duration / 3600;
    echo 'Time spend in hrs: ' . $duration_hrs;

?>

そして出力:

0.16444444444444
2.36
0.0016666666666667
Time spend in hrs: 2.5261111111111 

あなたの時間形式が正しくない13, July 2012 04:04:32 PMよう13. July 2012 04:04:32 PMです:

strtotime('13. July 2012 04:04:32 PM')

正しく動作します。1342195472それはあなたの代わりに与えるべきです1342168834。したがって、間違ったマイクロタイムを生成している時間形式を確認してください

于 2012-07-13T11:18:12.550 に答える
0
$total_duration = 0;
foreach($logArray as $log)
{
  $duraton = $log['outtime'] - $log['intime'];
  $total_duration += $duration;
}
$duration_hrs = $total_duration/3600;
echo 'Time spend in hrs :'.$duration_hrs;
于 2012-07-13T11:03:20.250 に答える
0

コードに単純なタイプミスがあります。それを確認します:

duraton vs duration

変わり、元気になります。

于 2012-07-13T12:44:46.540 に答える