2011-10-22 60 views
0

我試圖從codeigniter中的活動記錄中收到結果中的重複值計數。找出結果數組中重複值的總計數Codeigniter

For example: 

1 => 12 
2 => 21 
3 => 22 
4 => 21 
5 => 12 
6 => 45 

有沒有我們可以找出總數所以它與12 = 1出來的方式,21 = 2,22 = 1,12 = 2,45 = 1等?

Codeigniter的方式將是偉大的,但我也開放PHP方式。

OK array_count_values不低於陣列工作:

Array 
(
    [0] => Array 
     (
      [key_id] => 1790 
      [key_name] => printer brisbane 
      [link_id] => 1130 
      [link_url] => 99cards.com 
     ) 

    [1] => Array 
     (
      [key_id] => 1982 
      [key_name] => test 
      [link_id] => 1130 
      [link_url] => 99cards.com 
     ) 

) 

有沒有一種方法,我們可以發現,link_id數爲2?

我找到答案我自己。下面是代碼:

$e = 0; 
      foreach ($q as $qs){ 
       $i = 1; 
       foreach ($q as $qss){ 
        if($qss['link_id'] == $qs['link_id']){ 
         $q[$e]['link_count'] = $i; 
        } 
        $i++; 
       } 
       $e++; 
      } 
+0

不徹底改變的問題。 – diEcho

回答

3

array_count_values()用於此目的

它返回值的輸入從一個關聯數組作爲鍵和其作爲值進行。

$array = array(1, "hello", 1, "world", "hello"); 
print_r(array_count_values($array)); 

上面的例子將輸出:

Array (
    [1] => 2 
    [hello] => 2 
    [world] => 1) 
+0

這出現了錯誤:消息:array_count_values():只能計算STRING和INTEGER值!我在放陣。這是爲什麼發生? –

+0

給出什麼錯誤? – diEcho

+0

@ hybmg58現在你已經改變了這個問題。請參閱該頁面上給出的示例。 – diEcho

0

我們可以做手工如下:

$count_array = array(); 
foreach($results as $result) 
{ 
    $link_id = $result['link_id']; 
    if(isset($count_array[$link_id])) 
    { 
     $count_array[$link_id] = $count_array[$link_id]+1; 
    } 
    else 
    { 
     $count_array[$link_id] = 1; 
    } 
}