我有这个数组
Array
(
[0] => posts Object
(
[title] => test1
[dbh] => DataBase Object
(
[dbh] => PDO Object ( )
)
)
[1] => posts Object
(
[title] => test1
[dbh] => DataBase Object
(
[dbh] => PDO Object ( )
)
)
[2] => posts Object
(
[title] => test2
[dbh] => DataBase Object
(
[dbh] => PDO Object ( )
)
)
)
我不能使用array_unique(),因为该对象不能转换为字符串
答案 0 :(得分:0)
最好的方法是不要使用foreach。您应该使用:
for ($i = 0; $i < count($array); $i++) {
for ($j = $i + 1; $j < count($array); $j++) {
if ($array[$i] === $array[$j]) {
unset($array[$j]);
$array = array_values($array);
}
}
}
Foreach制作了一个数组的副本并在副本上循环,这使得跟踪已经测试/删除了哪些副本变得有点复杂。
上面的代码将检查您的post
对象是否属于同一个实例,如果是,则将其删除。您可能想要检查它们是否包含相同的数据,但它们不是同一个实例。然后你必须稍微扩展if
行:
if ($array[$i]->title === $array[$j]->title && $array[$i]->dbh === $array[$j]->dbh) {
...用于检查标题是否相同且DataBase
个对象属于同一个实例。