如何分隔数组中重复值的键

Posted

技术标签:

【中文标题】如何分隔数组中重复值的键【英文标题】:How to separate keys of duplicate values in an array 【发布时间】:2013-07-17 05:05:55 【问题描述】:

我有一个动态的 $my_Array。我应该怎么做才能根据 $my_Array 获得 $Final_array。

    $my_Array = array(  
                ['arm'] => 'cc9f8eb4-e29f-44b4-8dcd-ac08e9b1faa6',
                ['min'] => 'cc9f8eb4-e29f-44b4-8dcd-ac08e9b1faa6',
                ['msk'] => 'cc9f8eb4-e29f-44b4-8dcd-ac08e9b1faa6',
                ['con'] => 'c72a7fb8-308a-482a-96d5-7a7853e16c49',
                ['ref'] => 'c72a7fb8-308a-482a-96d5-7a7853e16c49',
             ) 


   $Final_array = array
                (   'cc9f8eb4-e29f-44b4-8dcd-ac08e9b1faa6' => 'arm, min, msk',
                    'c72a7fb8-308a-482a-96d5-7a7853e16c49' => 'con, ref'
                )

【问题讨论】:

为什么不自己写呢?这并不难。快来学习,不要让别人写你的代码 【参考方案1】:
$my_Array = array(  
                'arm' => 'cc9f8eb4-e29f-44b4-8dcd-ac08e9b1faa6',
                'min' => 'cc9f8eb4-e29f-44b4-8dcd-ac08e9b1faa6',
                'msk' => 'cc9f8eb4-e29f-44b4-8dcd-ac08e9b1faa6',
                'con' => 'c72a7fb8-308a-482a-96d5-7a7853e16c49',
                'ref' => 'c72a7fb8-308a-482a-96d5-7a7853e16c49',
             ) ;
$data = array();
foreach( $my_Array as $key => $value) 
    if(isset( $data[ $value ] )) 
        $data[ $value ] = $data[ $value ] .', '.$key;
     else 
        $data[ $value ] = $key;
    

希望以上代码对您有所帮助。

【讨论】:

【参考方案2】:
$Final_array = array();               
foreach($my_Array as $key => $value)
 if(array_key_exists($value, $Final_array))

  $Final_array[$value] = $Final_array[$value]. ", ".$key;

 else

  $Final_array[$value] = $key;

 

print_r($Final_array);        
?>

输出:

Array
(
    [cc9f8eb4-e29f-44b4-8dcd-ac08e9b1faa6] => arm, min, msk
    [c72a7fb8-308a-482a-96d5-7a7853e16c49] => con, ref
)

【讨论】:

【参考方案3】:

我尝试用一​​个循环执行此操作,但失败了,但希望你没问题。

$new = array();
foreach ($my_Array as $key => $val) 
   $new[$val][] = $key;


foreach ($new as $key => $val) 
   $new[$key] = implode(", ". $val);

【讨论】:

以上是关于如何分隔数组中重复值的键的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串空格分隔的键,唯一字的值对转换为字典

php数组的重复值如何过滤掉

PHP获取数组中重复值的键值

返回最小值的键[重复]

JavaScript:检查对象数组中是不是存在重复的键值并删除所有但最近添加的具有该键值的对象

在javascript中找到地图中的键[重复]