这是文本数据,每行一条浏览记录,用explode("\n",$txt);转。数据:数量 ID 日期
1|50|2012-07-04 14:18:51
1|75|2012-07-04 14:19:16
1|80|2012-07-04 14:19:16
1|48|2012-07-04 14:19:16
1|61|2012-07-04 14:19:16
1|50|2012-07-04 14:19:16
1|75|2012-07-04 14:20:32
1|80|2012-07-04 14:20:32
1|48|2012-07-04 14:20:32
1|61|2012-07-04 14:20:32
1|50|2012-07-04 14:20:32想把第二个值(ID)相同的合并一下数量再入库,请教下该如何操作?比如:id为50的=3,75的=2,……
1|50|2012-07-04 14:18:51
1|75|2012-07-04 14:19:16
1|80|2012-07-04 14:19:16
1|48|2012-07-04 14:19:16
1|61|2012-07-04 14:19:16
1|50|2012-07-04 14:19:16
1|75|2012-07-04 14:20:32
1|80|2012-07-04 14:20:32
1|48|2012-07-04 14:20:32
1|61|2012-07-04 14:20:32
1|50|2012-07-04 14:20:32想把第二个值(ID)相同的合并一下数量再入库,请教下该如何操作?比如:id为50的=3,75的=2,……
#注释的是另一种算法,不过没出来,但是剩下的够用了
$arrtmp = array(
"1|50|2012-07-04 14:18:51",
"1|75|2012-07-04 14:19:16",
"1|80|2012-07-04 14:19:16",
"1|48|2012-07-04 14:19:16",
"1|61|2012-07-04 14:19:16",
"1|50|2012-07-04 14:19:16",
"1|75|2012-07-04 14:20:32",
"1|80|2012-07-04 14:20:32",
"1|48|2012-07-04 14:20:32",
"1|61|2012-07-04 14:20:32",
"1|50|2012-07-04 14:20:32"
);
//$arrData = array();
foreach($arrtmp as $tmp){
list($count[], $id[], $date[], $time[]) = sscanf($tmp, "%d|%d|%s %s");
//list($data['count'], $data['id'], $data['date'], $data['time']) = sscanf($tmp, "%d|%d|%s %s");
//$arrData[] = $data;
}
//echo "arrData-->>";print_r($arrData);echo "<br>";
echo "id-->>";print_r($id);echo "<br>";
#Array ( [0] => 50 [1] => 75 [2] => 80 [3] => 48 [4] => 61 [5] => 50 [6] => 75 [7] => 80 [8] => 48 [9] => 61 [10] => 50 )
echo "count_id-->>";print_r(array_count_values($id));
#count_id-->>Array ( [50] => 3 [75] => 2 [80] => 2 [48] => 2 [61] => 2 )
array($count=>'?',$id=>'?',$time=>'?');
抱歉哦,我以为我在3楼已回答你了。期待数据:
3|50|2012-07-04 14:18:51
2|75|2012-07-04 14:19:16
2|80|2012-07-04 14:19:16
2|48|2012-07-04 14:19:16
2|61|2012-07-04 14:19:16最后能转为:
array($count=>'?',$id=>'?',$time=>'?');
"1|50|2012-07-04 14:18:51",
"1|75|2012-07-04 14:19:16",
"1|80|2012-07-04 14:19:16",
"1|48|2012-07-04 14:19:16",
"1|61|2012-07-04 14:19:16",
"1|50|2012-07-04 14:19:16",
"1|75|2012-07-04 14:20:32",
"1|80|2012-07-04 14:20:32",
"1|48|2012-07-04 14:20:32",
"1|61|2012-07-04 14:20:32",
"1|50|2012-07-04 14:20:32"
);
$arrData = array();
foreach($arrtmp as $tmp){
//list($count[], $id[], $date[], $time[]) = sscanf($tmp, "%d|%d|%s %s");
list($data['count'], $data['id'], $data['date'], $data['time']) = sscanf($tmp, "%d|%d|%s %s");
$arrData[] = $data;
}
echo "arrData-->>";print_r($arrData);echo "<br>";
#arrData-->>Array ( [0] => Array ( [time] => 14:18:51 [date] => 2012-07-04 [id] => 50 [count] => 1 ) [1] => Array ( [time] => 14:19:16 [date] => 2012-07-04 [id] => 75 [count] => 1 ) [2] => Array ( [time] => 14:19:16 [date] => 2012-07-04 [id] => 80 [count] => 1 ) [3] => Array ( [time] => 14:19:16 [date] => 2012-07-04 [id] => 48 [count] => 1 ) [4] => Array ( [time] => 14:19:16 [date] => 2012-07-04 [id] => 61 [count] => 1 ) [5] => Array ( [time] => 14:19:16 [date] => 2012-07-04 [id] => 50 [count] => 1 ) [6] => Array ( [time] => 14:20:32 [date] => 2012-07-04 [id] => 75 [count] => 1 ) [7] => Array ( [time] => 14:20:32 [date] => 2012-07-04 [id] => 80 [count] => 1 ) [8] => Array ( [time] => 14:20:32 [date] => 2012-07-04 [id] => 48 [count] => 1 ) [9] => Array ( [time] => 14:20:32 [date] => 2012-07-04 [id] => 61 [count] => 1 ) [10] => Array ( [time] => 14:20:32 [date] => 2012-07-04 [id] => 50 [count] => 1 ) )
1|50|2012-07-04 14:18:51
1|75|2012-07-04 14:19:16
1|80|2012-07-04 14:19:16
1|48|2012-07-04 14:19:16
1|61|2012-07-04 14:19:16
1|50|2012-07-04 14:19:16
1|75|2012-07-04 14:20:32
1|80|2012-07-04 14:20:32
1|48|2012-07-04 14:20:32
1|61|2012-07-04 14:20:32
1|50|2012-07-04 14:20:32
html;
$ar=preg_split("/[\n\r]/",$s);
$t=array();
foreach($ar as $v){
$tem=explode('|',$v);
if(!$t[$tem[1]]) $t[$tem[1]]=$tem;
else $t[$tem[1]][0]+=$tem[0];
}
print_r(array_values($t));
Array
(
[0] => Array
(
[0] => 3
[1] => 50
[2] => 2012-07-04 14:18:51
) [1] => Array
(
[0] => 2
[1] => 75
[2] => 2012-07-04 14:19:16
) [2] => Array
(
[0] => 2
[1] => 80
[2] => 2012-07-04 14:19:16
) [3] => Array
(
[0] => 2
[1] => 48
[2] => 2012-07-04 14:19:16
) [4] => Array
(
[0] => 2
[1] => 61
[2] => 2012-07-04 14:19:16
))