У меня есть массив объектов, но мне нужно, чтобы удалить аналогичные объекты от нескольких свойств из них:Удалить похожие объекты из массива?
, например:
array(12) {
[0]=>
object(stdClass)#848 (5) {
["variant"]=>
object(stdClass)#849 (4) {
["name"]=>
string(8) "Alex"
}
["age"]=>
int(10)
}
[1]=>
object(stdClass)#851 (5) {
["variant"]=>
object(stdClass)#852 (4) {
["name"]=>
string(8) "Alex"
}
["age"]=>
int(10)
}
Как сделать один объект в массиве для этого (если например, мне нужно сравнить только по свойству имени?)
Все еще есть проблема с ним.
Обновлено
Я создать новый массив объектов:
$objects = array(
(object)array('name'=>'Stiven','age'=>25,'variant'=>(object)array('surname'=>'Sigal')),
(object)array('name'=>'Michael','age'=>30,'variant'=>(object)array('surname'=>'Jackson')),
(object)array('name'=>'Brad','age'=>35,'variant'=>(object)array('surname'=>'Pit')),
(object)array('name'=>'Jolie','age'=>35,'variant'=>(object)array('surname'=>'Pit')),
);
echo "<pre>";
print_r($objects);
Так что мне нужно сделать, это сравнить свойства объекта (variant-> фамилий и возрастов), если два объекта имеют одинаковый возраст и вариант-> фамилию, мы должны удалить один из этих объектов.
Половина solution
является:
$tmp = array();
foreach ($objects as $item=>$object)
{
$tmp[$object->variant->surname][$object->age] = $object;
}
print_r($tmp);
Unfortunatelly мне нужен массив старого типа объектов.
Вы можете использовать 'array_walk' с обратным вызовом ... –
И если есть несколько объектов с тем же именем, что должно произойти? – Jon
Если несколько объектов с одинаковым именем должны быть только одним из них в массиве. – Smash