解决方案 »
- HTTP请求中出现两段Cookie:
- 零起点学习Drupal教程[第一章---引言]
- PHP 写文件写不进去
- TUTOS+Apache+MySQL+PHP4or5安装,老是出错,不能正常访问,有没有人装过?
- 我用的phpeclipse里面,.inc文件里面php语法不识别,在什么地方能够设置一下?
- 如何根据地址的变化查询数据库
- php url重定向,不能用<meta>及
- 在同一域中,知道ASP的COOKE,如何从ASP中提取出用户名的COOKIE,并显示在当前页.急急.
- 能在win2k下通过shmop_*()函数操作共享内存嘛?
- 怎样才算正确启动MYSQL?随便问一下——你是怎么启动MYSQL的?
- 如何创建关联的mysql表-平时看的都是单表操作的书视频什么的
- 新手请教PHP怎么批量循环打印出四位数的数字?
$array1 = array(
0=>array(
'day'=>'2014-3-7',//注册日期
'data'=>array(
0=>array('uid'=>'0000001'),
1=>array('uid'=>'0000002'),
3=>array('uid'=>'0000003'),
4=>array('uid'=>'0000004'),
)
),
1=>array(
'day'=>'2014-3-8',//注册日期
'data'=>array(
0=>array('uid'=>'0000005'),
1=>array('uid'=>'0000007'),
2=>array('uid'=>'0000006'),
)
),
2=>array(
'day'=>'2014-3-10',//注册日期
'data'=>array(
0=>array('uid'=>'0000008'),
1=>array('uid'=>'0000010'),
2=>array('uid'=>'0000009'),
3=>array('uid'=>'0000012'),
4=>array('uid'=>'0000013'),
)
),
3=>array(
'day'=>'2014-3-11',//注册日期
'data'=>array(
0=>array('uid'=>'0000015'),
1=>array('uid'=>'0000014'),
2=>array('uid'=>'0000025'),
3=>array('uid'=>'0000017'),
4=>array('uid'=>'0000018'),
)
),
);
//登录日志
$array2 = array(
0=>array(
'day'=>'2014-3-8',//登录日期
'ge_data'=>array(
0=>array('uid'=>'0000001'),
1=>array('uid'=>'0000002'),
3=>array('uid'=>'0000003')
)
),
1=>array(
'day'=>'2014-3-9',//登录日期
'ge_data'=>array(
0=>array('uid'=>'0000002'),
1=>array('uid'=>'0000007'),
2=>array('uid'=>'0000006'),
)
),
2=>array(
'day'=>'2014-3-11',//登录日期
'ge_data'=>array(
0=>array('uid'=>'0000001'),
1=>array('uid'=>'0000007'),
2=>array('uid'=>'0000008'),
3=>array('uid'=>'0000012'),
4=>array('uid'=>'0000013'),
5=>array('uid'=>'0000003'),
6=>array('uid'=>'0000002')
)
)
);$res = array();//读取每天的注册记录
foreach($array1 as $r) {
$day = $r['day'];
$res[$day] = array('day' => $day, 'count' => count($r['data']));
$d = date('z', strtotime($day)); //对于当日注册每个用户
foreach($r['data'] as $us) {
foreach($array2 as $t) {
$rd = date('z', strtotime($t['day']));
//检查他在哪天登录了
foreach($t['ge_data'] as $u) {
if($us['uid'] == $u['uid']) $res[$day]['day_'.($rd-$d)][] = $us['uid']; //保存登录的uid以便于检查
}
}
}
}
print_r($res);Array
(
[2014-3-7] => Array
(
[day] => 2014-3-7
[count] => 4
[day_1] => Array
(
[0] => 0000001
[1] => 0000002
[2] => 0000003
) [day_4] => Array
(
[0] => 0000001
[1] => 0000002
[2] => 0000003
) [day_2] => Array
(
[0] => 0000002
) ) [2014-3-8] => Array
(
[day] => 2014-3-8
[count] => 3
[day_1] => Array
(
[0] => 0000007
[1] => 0000006
) [day_3] => Array
(
[0] => 0000007
) ) [2014-3-10] => Array
(
[day] => 2014-3-10
[count] => 5
[day_1] => Array
(
[0] => 0000008
[1] => 0000012
[2] => 0000013
) ) [2014-3-11] => Array
(
[day] => 2014-3-11
[count] => 5
))遗憾的是根据你的数据,不能得到你示例的结果
应该是你弄错了
3月8日登录的UID有:0000001,0000002,0000003
3月9日登录的UID有:0000002,0000006,0000007
所以针对3月7日,他的第二天也就是3月9日登录的UID只有一个0000002
以下都依次类推
3月8日登录的UID有:0000001,0000002,0000003
3月9日登录的UID有:0000002,0000006,0000007
所以针对3月7日,他的第二天也就是3月9日登录的UID只有一个0000002
以下都依次类推写错了,是第三天也就是3月9日
[2014-3-7] => Array
(
[day] => 2014-3-7
[count] => 4
[day_1] => Array
(
[0] => 0000001
[1] => 0000002
[2] => 0000003
)
[day_4] => Array
(
[0] => 0000001
[1] => 0000002
[2] => 0000003
)
[day_2] => Array
(
[0] => 0000002
)
)即
第二天 3 个
第三天 1 个
第五天 3 个
而绝没有第四天的2 个!
'2014-3-7' => array(
'day' => '2014-3-7',
'count' => 4,
'day_1' => array(
0 => 0000001,
1 => 0000002,
2 => 0000003
) ,
'day_4' => array(
0 => 0000001,
1 => 0000002,
2 => 0000003
) ,
'day_3' => array(
0 => 0000001,
1 => 0000002
) ,
'day_2' => array(
0 => 0000002
) ,
'day_5' => array(
0 => 0000002
)
) ,
'2014-3-8' => array(
'day' => '2014-3-8',
'count' => 3,
'day_4' => array(
0 => 0000005,
1 => 0000007
) ,
'day_2' => array(
0 => 0000005,
1 => 0000007,
2 => 0000006
) ,
'day_1' => array(
0 => 0000007,
1 => 0000006
) ,
'day_3' => array(
0 => 0000007,
1 => 0000006
)
) ,
'2014-3-10' => array(
'day' => '2014-3-10',
'count' => 5,
'day_1' => array(
0 => 0000008,
1 => 0000012,
2 => 0000013
) ,
'day_2' => array(
0 => 0000008,
1 => 0000010,
2 => 0000012,
3 => 0000013
)
) ,
'2014-3-11' => array(
'day' => '2014-3-11',
'count' => 5,
'day_1' => array(
0 => 0000015,
1 => 0000025,
2 => 0000018
)
)
);
$res[$day]['day_'.($rd-$d)][] = $us['uid'];
改成
$res[$day]['day_'.($rd-$d)]++;
不就是计数了吗?
中:
$day 是数组提供的 日期串
strtotime($day) 将日期串转换为unix时间戳
date('z', strtotime($day)) 取得日期是在一年中的第几天
(
[0] => 3001000
[1] => 3001726
[2] => 3001728
[3] => 3001733
[4] => 3001734
[5] => 3001735
[6] => 3001745
)这个是怎么回事?