检查数组中是否存在对象

时间:2009-08-08 16:33:24

标签: php arrays

起初我想说我是PHP的新手。

我有一个实现检查对象是否在数组中,如果没有添加另一个数组。但它总是返回false并在order数组中添加。

我该如何解决?

这部分代码:

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

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

2 个答案:

答案 0 :(得分:10)

由于您要在数组中添加实例,请确保数组in_array()使用严格模式比较:

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

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

此外,您需要了解类的2个不同实例,即使它们包含相同的数据,仍然是2个不同的实例。如果要知道2个实例是否相同,您需要创建自己的循环并手动比较实例。

你可以省略严格模式,比较班级成员,但只要你有不同的成员,就会不相等​​。

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

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

答案 1 :(得分:0)

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

print_r($temp_array);

看看你得到了什么......这应该让你知道如何解决它。