Всем привет! Кто сталкивался с сортировкой массива путем удаления повторов. Есть массив: PHP: $array1 = [ ["name1"=>"Ars","name2"=>"Ar","name3"=>"Ap"], ["name1"=>"Ars1","name2"=>"Ar","name3"=>"Ap"], ["name1"=>"Ars1","name2"=>"Ar","name3"=>"Ap"], ["name1"=>"Ars2","name2"=>"Ar","name3"=>"Ap"], ["name1"=>"Ars","name2"=>"Ar","name3"=>"Ap"] ]; Как перебрать чтобы остались лишь один совпавший, т.е: PHP: $array1 = [ ["name1"=>"Ars","name2"=>"Ar","name3"=>"Ap"], ["name1"=>"Ars1","name2"=>"Ar","name3"=>"Ap"], ["name1"=>"Ars2","name2"=>"Ar","name3"=>"Ap"] ]; Сортировка происходит по первому ключу "name1"; Думал встроенными функциями массивов, но не Intersect ничего не дает, что и другие варианты. Спасибо заранее за ответ.
Все справился. Кому интересно: array_map("unserialize", array_unique(array_map("serialize", $array1))); Но возник еще вопрос, тот же пример с новыми ключами: PHP: $array1 = [ ["name1"=>"Ars","name2"=>"Ar","value"=>"1"], ["name1"=>"Ars1","name2"=>"Ar","value"=>"2"], ["name1"=>"Ars1","name2"=>"Ar","value"=>"3"], ["name1"=>"Ars2","name2"=>"Ar","value"=>"4"], ["name1"=>"Ars","name2"=>"Ar","value"=>"5"] ]; Нужно прибавить совпавшиеся. Прибавить value. PHP: $array1 = [ ["name1"=>"Ars","name2"=>"Ar","value"=>"6"], ["name1"=>"Ars1","name2"=>"Ar","value"=>"5"], ["name1"=>"Ars2","name2"=>"Ar","value"=>"4"] ];
Очень много чего там совпадает, отличается лишь несколько столбцов. (Из 80 только 3-4). Как ты хочешь вывести из бд, запросом? у них id только уникальное поле.
Это плохо, скорее всего БД не правильно спроектирована. Вы что-нибудь слышали о нормализации данных в БД?
База не моя, по ней работаю. Уже год ведут, я не бдшник, чтобы делать реорганизацию. Просто хочу сделать работу проще, изначально сделал по другому, все работает. Ищу ответ может кто напишет проще.
SELECT * FROM zrnKupol.xrt_vbbAmur_bookRecover where name='RttER12333189' AND bag='789558' AND Material='PL';
Группировка по полю name1 и сумму для value. Я так понимаю name2 одинаковый для всей выборки? Судя по name1, name2 и тд. бд и правда плохо спроектированная.
Конечно уникальность данных надо обеспечивать на уровне SQL. НО… При группировке во фразе select не могут стоять произвольные поля. Там допустимы только те данные, которые напрямую зависят от группирующего выражения. Проще говоря там могут быть только поля из фразы group by и агрегатные функции от других полей, например count(). Раз в пару месяцев я пишу об этом на форуме ))) Нельзя группировать с * в том смысле, что это будет бессмыслица. А в некоторых конфигурациях это буквально вызывает ошибку. Впрочем создавать бессмыслицу можно и на стороне php.
@artoodetoo, раз уж про группировку никто кроме меня не заикался, то твой пост про произвольные поля адресован мне? Тогда встречный вопрос зачем? Я то и без того это знаю, а ТС и след простыл. Моя задача "насорить хлебных крошек", что бы автор темы сам смог погуглить да разобраться. Готовый ответ - это же так скучно.
Зачем - слишком общий вопрос. Так мы придем к тому зачем вообще тратить время на чьи-то вопросы. Твои в частности --- Добавлено --- Я не уверен зачем это всё. От скуки, вероятно.