2016-06-19 3 views
1

これは私を夢中にしています。PHPの日付配列の秒数を数えて

$time = array(
    '91' => array(
     '100' => array(
      '2014/05/28 00:23:26' =>array(
       'id' =>'15', 
       'time' => '2014/05/28 00:23:26', 
       'dept' => '8' 
      ), 
      '2014/05/28 00:25:51' =>array(
       'id' =>'15', 
       'time' => '2014/05/28 00:25:51', 
       'dept' => '8' 
      ), 
      '2014/05/28 00:27:45' =>array(
       'id' =>'15', 
       'time' => '2014/05/28 00:27:45', 
       'dept' => '9' 
      ), 
      '2014/05/28 00:28:01' =>array(
       'id' =>'15', 
       'time' => '2014/05/28 00:28:01', 
       'dept' => '8' 
      ), 
      '2014/05/28 00:30:46' =>array(
      'id' =>'15', 
       'time' => '2014/05/28 00:30:46', 
       'dept' => '4' 
     ) 
    ) 
    ) 
); 

説明は次のとおりです:

そして、何私がやりたいことは、私はこの配列を持っている何8.

をDEPTないユーザは、例えば、特定の部門に滞在した秒数を数えることです

23:26〜25:51の秒差は145です。

25:51から27:45には114秒の差があります。

28:01から30:46の秒の差は165です。

したがって、145 + 114 + 166を追加した場合、ユーザーがその部門に滞在した合計秒は424秒です。

dept 9:27:45〜28:01には16秒の差があります。私はその配列に基づいての出力を達成したい

:私はいくつかの間違った結果を得るhttps://eval.in/591599

$results = array(
     '8' => '424', 
     '9' => '16' 
); 

私がこれまで行ってきたコードがです。どうか私を助けてください。

答えて

1

あなたがここに持っているようにあなたは、連想配列のために働くであろう、this answerのバリアントを使用することができます:

foreach($time as $arr) { 
    foreach($arr as $visits) { 
     $visits = array_values($visits); // convert to indexed array 
     foreach($visits as $i => $visit) { 
      if ($i == count($visits)-1) break; 
      $dept = $visit['dept']; 
      $results[$dept] = (isset($results[$dept]) ? $results[$dept] : 0) + 
       strtotime($visits[$i+1]['time']) - strtotime($visit['time']); 
     } 
    } 
} 

$resultsは次のとおりです。

Array 
(
    [8] => 424 
    [9] => 16 
) 

は、それが私eval.in

+0

上で実行を参照してください。私を助けてくれてありがとうと言いたい。 – useruseruser