Mat*_*wak 11
您可以将array_uintersect与spl_object_hash结合使用,请参阅示例:
array_uintersect($a, $b, function($a, $b) {
return strcmp(spl_object_hash($a), spl_object_hash($b));
});
Run Code Online (Sandbox Code Playgroud)
其中'$ a'和'$ b'是您想要交叉的一些对象的数组.
小智 6
好的toString函数已经实现并被称为serialize;)所以
array_map(
'unserialize',
array_intersect(
array_map(
'serialize',
$obj1
),
array_map(
'serialize',
$obj2
)
)
);
Run Code Online (Sandbox Code Playgroud)
将做的工作,提到更高的例子不起作用'因为array_intersect工作只有字符串,如同有人提到的那样
array_intersect()返回一个数组,其中包含所有参数中存在的 array1 的所有值。
那么在这个上下文中存在什么意思(确切地说是这个函数),我在 php.net 上找到了我的答案:
当且仅当 (string) $elem1 === (string) $elem2 时,两个元素才被视为相等。换句话说:当字符串表示相同时。
如果您的对象没有实现到字符串的唯一转换,则您不能在对象数组上使用它。