powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Удалить похожие объекты?
16 сообщений из 16, страница 1 из 1
Удалить похожие объекты?
    #38166681
Фотография Stasonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.S

Массив:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
$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->surname и age? Точнее не удалить, а оставить один из них, т.е. чтобы таких одинаковых элементов не было в массиве.
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166753
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stasonix,

Код: php
1.
2.
3.
4.
5.
$data = array();
foreach ($objects as $object) {
$data[$object->variant->surname] = $object;
}
$objects = array_values($data);
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166758
Фотография Stasonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренат,

Не только `surname` одинаковое должно быть, а и свойство `age`.
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166759
Фотография Stasonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stasonix,

И не сгруппировать, а просто удалить объект.
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166775
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stasonix,
а еще есть какие то пожелания?
Откудо дровишки? с базы. так объясните базе что вам нужно и не дергайте php
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166778
Фотография Stasonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SmeL_md,

Нет, к сожалению не только из базы, отовсюду :/
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166792
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stasonix,

Код: php
1.
2.
3.
4.
5.
$data = array();
foreach ($objects as $object) {
$data[$object->variant->surname.'_'.$object->age] = $object;
}
$objects = array_values($data);



авторКак удалить объекты, которые имеют одинаковые variant->surname и age? Точнее не удалить, а оставить один из них, т.е. чтобы таких одинаковых элементов не было в массиве.
авторИ не сгруппировать, а просто удалить объект.
Так что же вам нужно, в начале пишите что групировка, а потмо пишите что групировка и не нужна?
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166794
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stasonix,
тогда добавьте к варианту Ренат
$data[$object->variant->surname][$object->age] = $object;
потом обратным foreach соберите свой $objects;
а где Вы подглядели конструкцию (object)array( ?
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166795
Фотография Stasonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренат,

Ну это не совсем группировка, просто удаление лишних. Хотя можно сказать что и группировка.
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166796
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренат,
заведомо заложенная коллизия $object->variant->surname.'_'.$object->age
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166820
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SmeL_mdРенат,
заведомо заложенная коллизия $object->variant->surname.'_'.$object->age
где колизия?

зы. ага тоже как вариант SmeL_md
Код: php
1.
2.
3.
4.
5.
$data = array();
foreach ($objects as $object) {
$data[$object->variant->surname][$object->age] = $object;
}
$objects = array_values(array_map('array_shift',$data));
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166871
Фотография Stasonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренат,

А сам массив объектов сохраняет свою структуру? Мне просто надо чтобы как было так и осталось ( ну только без повторений естественно ).
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166904
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренат,
когда увидел строку
Код: php
1.
$objects = array_values(array_map('array_shift',$data));


подумал о круто, без foreach оказывается можно вернуть обратно, сразу проверил оказалось нет :( при разных age для Pit вернет одного.
2Stasonix
двумя foreach пробежитесь по $data и соберете свой $objects.
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166913
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SmeL_mdподумал о круто, без foreach оказывается можно вернуть обратно, сразу проверил оказалось нет :( при разных age для Pit вернет одного.
2Stasonix
двумя foreach пробежитесь по $data и соберете свой $objects.
А первые 4 строчки кода вы не забыли скопироватт? или только последнюю?

StasonixРенат,

А сам массив объектов сохраняет свою структуру? Мне просто надо чтобы как было так и осталось ( ну только без повторений естественно ).
вы пробуйте код а не спрашивайте: а код будет работать?
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166947
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренат to SmeL_mdА первые 4 строчки кода вы не забыли скопироватт? или только последнюю?
Предлагаю Вам скопировать и заодно изменить исходные данные
(object)array('name'=>'Jolie','age'=>3 4 ,'variant'=>(object)array('surname'=>'Pit')),
Омолодим чуток :)
...
Рейтинг: 0 / 0
Удалить похожие объекты?
    #38166951
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SmeL_mdРенат to SmeL_mdА первые 4 строчки кода вы не забыли скопироватт? или только последнюю?
Предлагаю Вам скопировать и заодно изменить исходные данные
(object)array('name'=>'Jolie','age'=>3 4 ,'variant'=>(object)array('surname'=>'Pit')),
Омолодим чуток :)
не проверил но дошло в чем дело) загнался я)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Удалить похожие объекты?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]