foreach($search as $s) {
$arSearch[] = array("ID" => CIBlockElement::SubQuery("ID", array("IBLOCK_ID" => 118, "PROPERTY_TAGS" => $s)));
}
$arSearch["PROPERTY_MODELS_AND_PROD_ID"] = $arResult["MODEL_OR_PROD"];
$GLOBALS['tagsFilter'] = $arSearch;
UPDATED:
Все-таки, такой способ некорректно работает: если передать в массив несколько существующих тегов, а после добавить парочку тегов, которых нет в этих элементах - БД начинает безбожно тупить.
Для такой задачи лучше использовать следующее:
$query = "SELECT IBLOCK_ELEMENT_ID, count(VALUE) cnt from b_iblock_element_prop_m118 where IBLOCK_PROPERTY_ID='2510' AND VALUE in ('".implode("','",$search)."') group by IBLOCK_ELEMENT_ID having cnt=".count($search);
$result = $DB->Query($query);
while($arElement = $result->GetNext()) {
$arSearch[] = $arElement['IBLOCK_ELEMENT_ID'];
}
В b_iblock_element_prop_m118 118 - ID инфоблока, в IBLOCK_PROPERTY_ID='2510' 2510 - ID искомого свойства.