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));
}
}
您可以根据需要进一步过滤数据*,但这给出了总体思路。
* -换句话说,您还可以测试新的时间戳是新的还是比当前保存的旧的,并在必要时替换。