如何分隔数组中重复值的键
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);
【讨论】:
以上是关于如何分隔数组中重复值的键的主要内容,如果未能解决你的问题,请参考以下文章