PHP在数组中合并类似的值

时间:2010-08-14 10:12:50

标签: php

$ arr =(a =>数组(1,2,3),b =>数组(1,2,3),c =>数组(4,5),d =>数组( 8,9,10),e =>数组(8,9),f =>数组(9,10);

我想合并相似的值,以便我得到:

  • 问题#1(类似的值,更难):

$ new_arr =(a_b => array(1,2,3),c =>(4,5),d_e_f => array(8,9,10));

  • 问题#2(完全相同的值,更容易):

$ new_arr =(a_b => array(1,2,3),c =>(4,5),d => array(8,9,10),e => array(8 ,9),f => array(9,10));

什么是最有效的方法?可能是一个难以解决的问题:D

谢谢!

2 个答案:

答案 0 :(得分:1)

我将这个发现称为图表的“连通组件”。

http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29

答案 1 :(得分:0)

$unique=array_unique($arr,SORT_REGULAR);
foreach (array_diff_key($arr,$unique) as $key=>$value) {
    $oldkey=array_search($value,$unique);
    unset($unique[$oldkey]);
    $unique[$oldkey.'_'.$key]=$value;
}
var_dump($unique);