使用PHP获取重复值的所有键

使用PHP获取重复值的所有键,php,arrays,key,distinct-values,Php,Arrays,Key,Distinct Values,我有一个如下所示的PHP数组 Array ( [825] => ca_knife_features [838] => ca_knife_features [795] => ca_knife_handle_materials [853] => ca_knife_handle_materials ) 我想将所有的键组合成一个相同的值,并将值作为键,如下所示 Array ( [ca_knife_features]=>array(8

我有一个如下所示的PHP数组

Array
(
    [825] => ca_knife_features 
    [838] => ca_knife_features 
    [795] => ca_knife_handle_materials 
    [853] => ca_knife_handle_materials 
)
我想将所有的键组合成一个相同的值,并将值作为键,如下所示

Array
(
[ca_knife_features]=>array(825,838)
[ca_knife_handle_materials]=>array(795,853)
)

我如何才能做到这一点?

获取所有值的所有键很容易

foreach ($array as $key => $value) {
    $result[$value][] = $key;
}
但这并不是只得到重复的值。有不同的方法可以做到这一点。一种方法是过滤结果,仅显示具有多个键的值

$result = array_filter($result, function($item) {
    return count($item) > 1;
});

我已使用以下代码完成此操作:

foreach($multiattrData as $key=>$value)
    if(array_key_exists($value, $out)){
    $out[$value][] = $key;}
    else{
         $out[$value] = array($key);  
    }

您是否已经尝试过foreach循环或其他类似的循环?您应该尝试自己编写代码。如果您有问题,请发布您尝试过的内容,并清楚解释哪些内容不起作用,然后提供。读一个好问题。一定要仔细阅读。一个非常简单的foreach循环可以解决这个问题。这是一个课程项目还是什么?这不太好。你应该包括没有重复的元素,这样就有了混合的内容——这有助于区分正确答案和错误答案。为什么这个页面上没有一个可接受的答案?