Php对数组中的重复元素进行计数,并对ID进行计数

Php对数组中的重复元素进行计数,并对ID进行计数,php,multidimensional-array,count,Php,Multidimensional Array,Count,如何在多维数组和ID的concat中找到重复元素的计数 我有一组技能名称和提要ID。我需要计算技能名称和饲料ID的浓度 Array ( [0] => Array ( [skill_name] => PHP [feed_id] => 100 ) [1] => Array ( [skill_name] => CSS

如何在多维数组和ID的concat中找到重复元素的计数

我有一组技能名称和提要ID。我需要计算技能名称和饲料ID的浓度

Array
(
    [0] => Array
        (
            [skill_name] => PHP
            [feed_id] => 100
        )
    [1] => Array
        (
            [skill_name] => CSS
            [feed_id] => 105
        )
    [2] => Array
        (
            [skill_name] => Php
            [feed_id] => 110
        )
    [3] => Array
        (
            [skill_name] => Php
            [feed_id] => 111
        )
    [4] => Array
        (
            [skill_name] => CSS
            [feed_id] => 112
        )
    [5] => Array
        (
            [skill_name] => Javascript
            [feed_id] =>114
        )
}
输出应如下所示

Array
(
    [0] => Array
        (
            [skill_name] => PHP
            [feed_id] => 100, 110, 111
            [count]=>3
        )
    [1] => Array
        (
            [skill_name] => CSS
            [feed_id] => 105, 112
            [count]=>2
        )
    [2] => Array
        (
            [skill_name] => Javascript
            [feed_id] => 114
            [count]=>1
        )

}

提前谢谢

这完全可以通过使用临时键和简单的串联和增量的单个循环来实现

//Assumption: Input is in $in

//Step 1: Cumulate
$tmp=array();
foreach ($in as $skill) {
  if (isset($tmp[$skill['skill_name']]))
    $tmp[$skill['skill_name']][]=$skill['feed_id'];
  else
    $tmp[$skill['skill_name']]=array($skill['feed_id']);
}

//Step 2: Fix up desired output format
$out=array();
foreach ($tmp as $k=>$v)
  $out[]=array(
    'skill_name' => $k,
    'feed_id' => implode(', ', $v),
    'count' => sizeof($v)
  );

//Result is in $out
代码:()

输出:

array (
  0 => 
  array (
    'skill_name' => 'PHP',
    'feed_id' => '100,110,111',
    'count' => 3,
  ),
  1 => 
  array (
    'skill_name' => 'CSS',
    'feed_id' => '105,112',
    'count' => 2,
  ),
  2 => 
  array (
    'skill_name' => 'Javascript',
    'feed_id' => 114,
    'count' => 1,
  ),
)

@Eugen,skill_名称不区分大小写。在您的代码中,Php和Php返回重复项。那么,在第一个循环中添加一些
strtoupper()
array (
  0 => 
  array (
    'skill_name' => 'PHP',
    'feed_id' => '100,110,111',
    'count' => 3,
  ),
  1 => 
  array (
    'skill_name' => 'CSS',
    'feed_id' => '105,112',
    'count' => 2,
  ),
  2 => 
  array (
    'skill_name' => 'Javascript',
    'feed_id' => 114,
    'count' => 1,
  ),
)