Bueno creo que lo logre, aun que tal vez se puede optimizar más remplazando eregi_replace por preg_replace, les dejo el código por si algún día lo necesitan:
Código PHP:
foreach ($arrayres as $xcompare){
list($$imgsname,$imgdname,$percent) = explode(";",$xcompare);
if($percent > 90){
if(!isset($lastgroup)){
$lastgroup="$imgsname;$imgdname";
}else{
if(eregi("($imgsname|$imgdname)",$lastgroup)){
$lastgroup .= ";$imgsname;$imgdname";
}else{
$grupos[]=$lastgroup;
$lastgroup="$imgsname;$imgdname";
}
}
}
}
$x=0;
while($grupos[$x]){
$og=$grupos[$x];
if($og==1){
$x++;
continue;
}
$y=$x+1;
while($grupos[$y]){
$dg=$grupos[$y];
if($dg==1){
$y++;
continue;
}
$og_regex = eregi_replace(";","|",$og);
if(eregi("($og_regex)",$dg)){
$grupos[$x] .= ";". $grupos[$y];
$grupos[$y] = 1;
}
$y++;
}
$x++;
}
$i=0;
foreach($grupos as $xgrupo){
if($xgrupo==1) continue;
$lgrupo = explode(";",$xgrupo);
$agrupo = array_unique($lgrupo);
$sgrupo = implode(";",$agrupo);
echo "Grupo " . $i++ . ": $sgrupo<br>";
foreach($agrupo as $smatch){
echo "<img src='folder_img/$id/$smatch' width='150'>";
}
echo "<br>";
}