Как из массива объектов удалить дублирующиеся объекты? Есть массив вида array(8122) { [0]=>
object(DonateOperation)#8127 (4) { ["id"]=>
int(0) ["price"]=>
string(10) " 100 ₽ " ["name"]=>
string(20) "Константин" ["date"]=>
string(10) "26.11.2020" } [1]=>
object(DonateOperation)#4 (4) { ["id"]=>
int(1) ["price"]=>
string(13) " 1 000 ₽ " ["name"]=>
string(31) "Дарья" ["date"]=>
string(10) "26.11.2020" } .. В этом массиве встречаются дублирующиеся объекты (имеют все одинаковые свойства, кроме id). Как корректнее оставить в массиве только уникальные объекты?
Для удаления дублирующихся объектов из массива, можно воспользоваться следующим способом:
Создать новый пустой массив, в который будут добавляться только уникальные объекты.Пройтись по исходному массиву и для каждого объекта сравнивать его свойства с уже добавленными объектами в новом массиве. Если такой объект уже присутствует, то не добавлять его, в противном случае добавить его в новый массив.
Пример реализации на PHP:
$uniqueObjects = []; foreach ($array as $object) { $isUnique = true; foreach ($uniqueObjects as $uniqueObject) { if ($object->price == $uniqueObject->price && $object->name == $uniqueObject->name && $object->date == $uniqueObject->date) { $isUnique = false; break; } } if ($isUnique) { $uniqueObjects[] = $object; } } // $uniqueObjects теперь содержит только уникальные объекты
В данном примере предполагается, что свойства "price", "name" и "date" определяют уникальность объекта. Если в вашем случае определение уникальности требует других свойств объектов, то их следует добавить в условие сравнения.
Для удаления дублирующихся объектов из массива, можно воспользоваться следующим способом:
Создать новый пустой массив, в который будут добавляться только уникальные объекты.Пройтись по исходному массиву и для каждого объекта сравнивать его свойства с уже добавленными объектами в новом массиве. Если такой объект уже присутствует, то не добавлять его, в противном случае добавить его в новый массив.Пример реализации на PHP:
$uniqueObjects = [];foreach ($array as $object) {
$isUnique = true;
foreach ($uniqueObjects as $uniqueObject) {
if ($object->price == $uniqueObject->price
&& $object->name == $uniqueObject->name
&& $object->date == $uniqueObject->date) {
$isUnique = false;
break;
}
}
if ($isUnique) {
$uniqueObjects[] = $object;
}
}
// $uniqueObjects теперь содержит только уникальные объекты
В данном примере предполагается, что свойства "price", "name" и "date" определяют уникальность объекта. Если в вашем случае определение уникальности требует других свойств объектов, то их следует добавить в условие сравнения.