Verwyder oorvleuel skikkings in PHP
-
29-09-2019 - |
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]);
}
}
}
}
Oplossing
array_unique(array_merge($first_array,$second_array))
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow