Vra

Ek het 'n funksie (gepos aan die onderkant), wat sal kyk na 'n multi-dimensionele skikking, en verwyder "gedeeltelik duplikate" gemaak. Wat ek bedoel met hierdie is:

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

Al die elemente in die eerste reeks (5, 10), is ook beskikbaar in die tweede reeks (5,10,15), en ons wil dus die eerste reeks te verwyder, sodat ons gelaat met:

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

Die funksie Ek het werke gemaak, maar dit is baie stadig, en ek dus draai om jou, in die hoop dat jou kundigheid, kan bespoedig my funksie.

Baie dankie by voorbaat!


$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]);
            }
        }
    }
}
Was dit nuttig?

Oplossing

array_unique(array_merge($first_array,$second_array))

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top