2010-08-14 181 views
0

$ arr =(a => array(1,2,3),b => array(1,2,3),c => array(4,5),d = > array(8,9,10),e => array(8,9),f => array(9,10);PHP合并数组中的相似值

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

  • 问题#1(相似的值,更硬):

$ new_arr =(A_B =>数组(1,2,3),C =>(4,5),d_e_f =>数组( 8,9,10));

  • 问题#2(确切地相同的值,更容易):

$ new_arr =(A_B =>数组(1,2,3),C =>(4,5),d =>数组( 8,9,10),e =>阵列(8,9),f =>阵列(9,10));

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

谢谢!

+0

#2(版本array_unique'与数组的作品,但不会创建'a_b'键名')可能的第一步是在用户投稿须知array_unique: http://www.php.net/manual/en/function.array-unique.php#97285 – 2010-08-14 10:20:39

回答

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);