Я могу вам предложить 2 способа решения.
Первый банальный foreach со сравнением.
Второй потребует память ПК, но сильно может ускорить процесс фильтрации.
На моменте сбора объектов в массив вам надо создать еще один в котором ключом будет свойство, а значениями ссылки на объекты.
$arrayProp = array(
'red' => array( &link_to_object ),
'2' => array( &link_to_object )
);
Дальше вам надо только найти уникальные объекты в этом массиве по необходимым ключам.
Память на второй массив почти не будет уходить, так как там будет храниться ссылка на объект. ссылка мало очень весит