这是文本数据,每行一条浏览记录,用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.   


    #注释的是另一种算法,不过没出来,但是剩下的够用了
    $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 )
      

  2.   

    @4楼是这个意思,如想把它们合在一起是在foreach里拼装吗?想得到如:
    array($count=>'?',$id=>'?',$time=>'?');
      

  3.   

    那就用其中注释掉的代码,最后的arrData就是结果数组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 ) ) 
      

  4.   


    抱歉哦,我以为我在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=>'?');
      

  5.   

    $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>";
    #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 ) )
      

  6.   

    $s=<<<html
    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
            ))