2010-11-06 2 views
1

Я сделал функцию (размещенную внизу), которая будет рассматривать многомерный массив и удалить «частично дубликаты». Что я имею в виду это:Удалить перекрывающиеся массивы в php

Array 
(
    [0] => Array(5,10) 
    [1] => Array(5,10,15) 
) 

Все элементы первого массива (5, 10), также доступны во втором массиве (5,10,15), и поэтому мы хотим, чтобы удалить первый массив таким образом, мы остались с:

Array(
    [1] => Array(5,10,15) 
) 

функцией я сделал работу, хотя это очень медленно, и я поэтому обращаюсь к вам, в надежде, что ваш опыт, может ускорить свою функцию.

спасибо, что заблаговременно!


$groups = array(
    array(5,10), 
    array(5,10,15) 
); 
$flag = array(); 
//clone the groups - we now have two identical arrays with all the groups 
$groupsInner = $groups; 
//iterate first array of groups 
foreach($groups as $index=>$group){ 
    $flag[]=$index; 

    //iterate second array of groups 
    foreach($groupsInner as $indexInner=>$groupInner){ 
     if(!in_array($indexInner, $flag)){ 

      if(count($group)<count($groupInner)){ 
       $diff = array_diff($group, $groupInner); 
       $array_to_be_deleted = $index; 
       $compared_to_array = $indexInner; 
       }else{ 
       $diff = array_diff($groupInner, $group); 
       $array_to_be_deleted = $indexInner; 
       $compared_to_array = $index; 
      } 

      //no diff means they are "partly duplicates" 
      if(count($diff)==0){ 
       unset($groups[$array_to_be_deleted]); 
       unset($groupsInner[$array_to_be_deleted]); 
      } 
     } 
    } 
} 

ответ

1

array_unique(array_merge($first_array,$second_array))

+0

Из описания я понимаю, что он хочет сохранить 2-мерный массив, но удалить элементы, если они появляются в нескольких «групп». – Evert

+0

@Evert: Да, вы правы. Каждый массив внутри основного массива представляет собой группу. Если все члены группы также входят в большую группу, меньшую группу можно удалить. Группа может быть удалена или сохранена: вы не можете удалить определенные элементы (члены) из группы. – sqren

Смежные вопросы