2011-10-22 59 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; 
    } 
}