2010-08-14 3 views
0

$ arr = (a => массив (1,2,3), b => массив (1,2,3), c => массив (4,5), d = > массив (8,9,10), е => массив (8,9), F => массив (9,10);PHP слияние аналогичных значений в массиве

Я хотел бы объединить близкие значения, так что я хотел бы получить:

  • Проблема № 1 (аналогичные значения, сложнее):

$ new_arr = (a_b => массив (1,2,3), с => (4,5), d_e_f => Array (8,9,10));

  • Проблема № 2 (точно такие же значения, проще):

$ new_arr = (a_b => массив (1,2,3), с => (4,5), д => Array (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 –

ответ

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); 
Смежные вопросы