起初我想说我是PHP的新手。
我有一个实现检查对象是否在数组中,如果没有添加另一个数组。但它总是返回false并在order数组中添加。
我该如何解决?
这部分代码:
$temp = new tempClass($x, $y);
if (!in_array($temp, $temp_array)) {
$temp2_array[] = $temp;
}
答案 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);
看看你得到了什么......这应该让你知道如何解决它。