Retirer les tableaux qui se chevauchent en php
-
29-09-2019 - |
Question
Je l'ai fait une fonction (affiché en bas), qui se penchera sur un tableau multidimensionnel, et de supprimer « doublons en partie ». Ce que je veux dire par là:
Array
(
[0] => Array(5,10)
[1] => Array(5,10,15)
)
Tous les éléments du premier tableau (5, 10), sont également disponibles dans le second tableau (5,10,15), et nous voulons donc enlever le premier tableau que nous nous retrouvons avec:
Array(
[1] => Array(5,10,15)
)
La fonction que j'ai fait des œuvres, mais il est très lent, et je suis donc se tourner vers vous, dans l'espoir que votre savoir-faire, peut accélérer ma fonction.
Merci beaucoup à l'avance!
$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]);
}
}
}
}
La solution
array_unique(array_merge($first_array,$second_array))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow