Php 检查数组中是否存在对象

Php 检查数组中是否存在对象,php,arrays,Php,Arrays,首先我想说我是PHP新手 我有一个检查对象是否在数组中的实现,如果不在数组中,则添加另一个数组。但它总是返回false并将其添加到Order数组中 我怎样才能解决它 以下是部分代码: $temp = new tempClass($x, $y); if (!in_array($temp, $temp_array)) { $temp2_array[] = $temp; } 由于要在阵列中添加实例,请确保阵列使用严格模式比较: $temp = new tem

首先我想说我是PHP新手

我有一个检查对象是否在数组中的实现,如果不在数组中,则添加另一个数组。但它总是返回false并将其添加到Order数组中

我怎样才能解决它

以下是部分代码:

$temp = new tempClass($x, $y);

    if (!in_array($temp, $temp_array)) {
            $temp2_array[] = $temp;
    }

由于要在阵列中添加实例,请确保阵列使用严格模式比较:

$temp = new tempClass($x, $y);

if (!in_array($temp, $temp_array, true)) {
  $temp2_array[] = $temp;
}
此外,您需要了解,一个类的两个不同实例,即使它们包含相同的数据,仍然是两个不同的实例。如果要知道两个实例是否相同,则需要创建自己的循环并手动比较实例

您可以省略strict模式,该模式将比较类的成员,但一旦有其他成员,它将是不相等的

$temp = new tempClass($x, $y);

if (!in_array($temp, $temp_array)) {
  $temp2_array[] = $temp;
}

我认为这是因为您正在检查数组中新对象的引用,而不是该对象的值。试着做:

print_r($temp_array);

看看你得到了什么。。。这应该会让您知道如何修复它。

正如您所说,我创建了自己的循环,但同样得到了相同的结果。下面是代码:函数exists($b,$array){foreach($a数组)如果($a->x==$b->x)返回true;返回false;}那么我真的不知道该说什么。在我看来,您粘贴的是伪代码而不是代码,但问题在于代码。if语句和大括号之间的分号?