2014-10-06 51 views
0

我已經在尋找我的問題的解決方案,但我根本沒有理解答案,也許是因爲它們對我的問題沒有用處,但是從來沒有想過,我還沒有想出如何做到這一點。具有多個值的PHP數組需要一種分組方式

我有結構像這樣的數組:

Array ( 
    [Firefox] => 
    Array ( 
     [name] => Firefox 
     [clicks] => 0 
     [requests] => 5731 
      ) 
    ) 


Array ( 
     [Firefox] => 
     Array ( 
      [name] => Firefox 
      [clicks] => 0 
      [requests] => 5731 
       ) 
     ) 

Array ( 
      [Internet Explorer] => 
      Array ( 
       [name] => Internet Explorer 
       [clicks] => 1 
       [requests] => 1973 
        ) 
      ) 

通過這部分代碼生成:

$q1="SELECT r.ua, count(c.rid) as cnum, count(r.kwd) as rnum 
    FROM requests r LEFT JOIN clicks_214 c ON r.id=c.rid 
    WHERE hid='$hid' 
    AND r.time BETWEEN '$date1 $hour1:00:00' AND '$date2 $hour2:00:00' 
    GROUP BY r.ua 
    ORDER BY rnum DESC 
    LIMIT $limit,50"; 
    $qr1=mysqli_query($conn,$q1) or die (mysqli_error()); 

    while(($r=mysqli_fetch_assoc($qr1))!=null) 
    { 
     $brow_obj=new Browser($r['ua']); 
     $brow=$brow_obj ->getBrowser(); 
     $b_array[$brow]['name'] = $brow; 
     $b_array[$brow]['clicks'] = $r['cnum']; 
     $b_array[$brow]['requests'] = $r['rnum']; 
    } 

我的問題是,所有我需要做的是一種GROUP BY的瀏覽器名稱(Firefox,Internet Explorer,Chrome ...)並總結所有點擊和請求名稱,明顯刪除重複項,例如:

名稱:Firefox 點擊:所有的點擊Firefox的 要求:所有用於Firefox

請求

名稱:Internet Explorer的 次數:所有IE 請點擊:所有IE

的請求,但不工作 這裏是表結構:

要求

id(PK),ua(user agent),kwd,hid(FK),time 

點擊

id(PK),rid(FK) 
+0

爲什麼你要在陣列中的數據進行排序時,你可以得到它通過查詢排序? – 2014-10-06 09:50:13

+0

我想對瀏覽器名稱做一個像GROUP BY一樣的事情,總點擊次數和請求次數,但我只會得到重複的瀏覽器名稱,點擊次數和請求編號爲 – CapitanFindus 2014-10-06 09:55:02

+0

,所以問題在於您得到的瀏覽器數量相同次,但數據是正確的? – 2014-10-06 10:00:20

回答

0

問題解決了,花了幾個小時去想這個,但是,確實是並不難畢竟:)

foreach ($b_array as $item) 
{ 
    $key = $item['name']; 
    if (!isset($browsers[$key])) 
    { 
     $browsers[$key] = array(
      'name' => $item['name'], 
      'clicks' => $item['clicks'], 
      'requests' => $item['requests'], 
     ); 
    } 
    else 
    { 

     $browsers[$key]['clicks'] += $item['clicks']; 
     $browsers[$key]['requests'] += $item['requests']; 
    } 
} 
相關問題