JSON日志数据为一个人的活动与时间戳,如何计数它


PHP: JSON Log Data For A Persons Activity With Timestamp, How To Count It?

JSON是这样的:

[{"NAME":"Burger Man","USER_ID":"14","TIMESTAMP":"1367668271","ACTION":"enabled"},    
{"NAME":"Test McTest","USER_ID":"16","TIMESTAMP":"1368092635","ACTION":"disabled"},
{"NAME":"Test McTest","USER_ID":"16","TIMESTAMP":"1368132268","ACTION":"enabled"}]

从这些数据中,我想计算一个人在当前日期之前活动的天数。如果一个人在这个数据中只被发现一次,那就意味着他在整个时间里都是活跃的,对于那些被发现不止一次的人,我必须以某种方式计算他们的活动时间。

$data = json_decode(file_get_contents($url));
$workers2 = array();
foreach($data as $mydata){
  $workers2[] = array($mydata->NAME, $mydata->ACTION, date('Y-m-d h:i:s',$mydata->TIMESTAMP));
}
echo '<pre>';
print_r($workers2);
echo '</pre>';

输出如下内容:

Array
(
 [0] => Array
    (
        [0] => Burger Man
        [1] => enabled
        [2] => 2013-05-04 02:51:11
    )
[18] => Array
    (
        [0] => Test McTest
        [1] => disabled
        [2] => 2013-05-09 12:43:55
    )
[19] => Array
    (
        [0] => Test McTest
        [1] => enabled
        [2] => 2013-05-09 11:44:28
    )
)

我想我应该把所有的名字插入到一个数组中,并检查是否有重复的名字。如果某个名字没有重复,我就知道他一直是活跃的。此外,一个人可以在任何时候被激活和禁用。我如何从这些数据中得到每个人的综合活动时间?

不要只是将它们添加到末尾的新数组中。指定索引,以便检查是否有重复。

$data = json_decode(file_get_contents($url));
$workers2 = array();
foreach($data as $mydata){
  if(!isset($workers2[$mydata->USER_ID])) {
     $workers2[$mydata->USER_ID] = array($mydata->NAME, $mydata->ACTION, date('Y-m-d h:i:s',$mydata->TIMESTAMP));
  }
}

您可以根据需要进一步过滤数据*,但这给出了总体思路。

* -换句话说,您还可以测试新的时间戳是新的还是比当前保存的旧的,并在必要时替换。