PHP多维数组-计算重复项并将重复项与原始项混合

PHP多维数组-计算重复项并将重复项与原始项混合,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,现在,在添加以下代码之后,我可以创建唯一的数组 $users = array( array(1,'name1'), array(1,'name1'), array(2,'name2'), array(3,'name3') ); 我可以用下面的代码计算重复项。但它缺少名称字段。因此,我需要做一些事情来获得名称、id和重复计数 array_map("unserializ

现在,在添加以下代码之后,我可以创建唯一的数组

$users = array(
              array(1,'name1'),
              array(1,'name1'),
              array(2,'name2'),
              array(3,'name3')
         );
我可以用下面的代码计算重复项。但它缺少名称字段。因此,我需要做一些事情来获得名称、id和重复计数

array_map("unserialize", array_unique(array_map("serialize", $users)));
我是否需要循环数组以获得类似的结果?或者php中还有其他技巧吗

array_count_values(array_map(function($item) {
        return $item['id'];
    }, $users));

要消除重复,请在阵列中使用唯一键。这里我们使用序列化数组的散列作为键,这是唯一标识比单个值更复杂的内容的最简单方法。如果项目已经存在,只需增加一个计数器。

Up投票支持使用“混合”一词。这感觉就像是一场80年代的学校舞蹈。不完全一样,但这里有一个类似的问题——与其展示一堆几乎正确的代码,不如描述一下你真正想要达到的目标。是否要将所有重复项合并到一个项目中并计算重复项的数量?@deceze我正在更新我期望的最终结果。一切都很好。无论如何,有没有办法用最短的代码来实现它们,以减少工作量。
$new_users = array(
              array(1,'name1', 2), //two times + descending order 
              array(2,'name2', 1), 
              array(3,'name3', 1)
         );
$new_users = array_reduce($users, function (array $new_users, array $user) {
    $key = sha1(serialize($user));
    if (isset($new_users[$key])) {
        $new_users[$key][2]++;
    } else {
        $new_users[$key] = array_merge($user, [1]);
    }
    return $new_users;
}, []);