($el1->prop1 <=> $el2->prop1) ?: ($el1->prop2 <=> $el2->prop2) ?: ($el1->prop3 <=> $el2->prop3);
array_uintersect($arr1, $arr2, function ($el1, $el2) {
return someFunction($el1) <=> someFunction($el2);
}
function someFunction (Some $some) {
return serialize([$some->prop1, $some->prop2]);
}
Совсем-совсем защититься не сможете.