|
|
||||||
Убрать дубли в массиве17.03.2016, 14:18. Показов 5596. Ответов 39
Метки нет (Все метки)
Есть большой массив с большим числом элементов (более 500) благо что он "двумерный".
Структура массива:
Требуется "пере собрать" новый массив, в котором отсутствуют элементы массива, в которых значения (Value) по ключам (KEY) одинаковые. Ключей по которым нужно делать отбор больше одного, например по ("KEY1", "KEY4", "KEY6", "KEY9"), т.е. нужно "стандартное" решение, которое удаляет дубли из массива по заданным ключам. Не могу понять с чего начать решения задачи, в голове даже алгоритма нету ее решения.
0
|
||||||
| 17.03.2016, 14:18 | |
|
Ответы с готовыми решениями:
39
Убрать дубли из многомерного массива Вывести дубли на экран в одномерном массиве. Как? Убрать дубли в запросе |
|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
||||||
| 17.03.2016, 14:36 | ||||||
|
Если я правильно понял задачу, то нужно 3 массива.
Исходный со всеми данными. Массив с ключами ("KEY1", "KEY4", "KEY6", "KEY9") - содержащий те строки, которые надо удалить. Выходной массив - пока пустой. Далее нужно сравнить каждую запись исходного массива с каждой записью массива с ключами. Если не совпало - вставить эту запись в выходной новый массив. Сравнение производить стандартно. Это 2 цикла (цикл в цикле). Добавлено через 5 минут Примерно так Псевдокод (ближе к паскаль)
0
|
||||||
|
|
|||||||
| 18.03.2016, 05:26 [ТС] | |||||||
|
Добавлено через 14 часов 44 минуты Не смог додумать как реализовать такую запись на РНР:
0
|
|||||||
|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
|||||||
| 18.03.2016, 09:07 | |||||||
|
Из интернета - уже php код. Обход двумерного массива - есть не что иное, как последовательный перебор элементов массива. А в листинге ниже представлен код который ещё и выводит на монитор содержимое. Листинг № 3 - Обход двумерного массива
0
|
|||||||
|
|
|||||||
| 18.03.2016, 09:41 [ТС] | |||||||
|
[$i] является числом от 0 до i (0, 1, 2, 3, 4, ..., i) [$q] тоже число от 0 до q (0, 1, 2, 3, 4, ..., q) Но у нас тут: [$i] является числом от 0 до i (0, 1, 2, 3, 4, ..., i) [$q] является строкой ('KEY1', 'KEY2', 'KEY3', 'KEY4', 'KEY5', 'KEY6', ...,'KEYq' ) Добавлено через 24 минуты Начало положено, пока сделал "отсев" по одному ключу (первый ключ 'KEY1') :
1. Переложить aTempArray в aArray и запустить это в несколько циклов, как это сделать пока не придумал. Но чет мне кажется, что с таким подходом я далеко не уеду
0
|
|||||||
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
|
|
| 18.03.2016, 10:15 | |
|
я не понял - дубли надо среди KEYX искать или среди valueX ?
0
|
|
|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
|||
| 18.03.2016, 10:22 | |||
|
А как насчет 6 вложенных циклов и массивов размерностью скажем 30? Есть и такие задачи. И это не сложно. Рекомендую лучше изучить работу с массивами. Ваша задача является типовой. Сомневаюсь, что есть другой разумный способ решения т.к. такие вложенные массивы используются почти везде при выборе/сортировке и т.д. По вашему коду вижу, что вы плохо понимаете суть. Вот это вообще бесмысленно, можно сказать даже не зная php...
0
|
|||
|
|
|||||||
| 18.03.2016, 10:26 [ТС] | |||||||
И все элементы [0], [1], [2] массива считаются дублями по ключам: KEY1, KEY4, KEY6
0
|
|||||||
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
|
||||||
| 18.03.2016, 10:29 | ||||||
|
а если бы например было так:
0
|
||||||
|
|
|||
| 18.03.2016, 10:37 [ТС] | |||
|
Добавлено через 1 минуту Добавлено через 2 минуты полудух, Грубо говоря, в KEY1 хранятся данные о породе кошек, в KEY5 хранятся их возраст, я думаю навряд ли эти данные пересекутся когда либо.
0
|
|||
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
|
||
| 18.03.2016, 10:44 | ||
|
$arr[0] с $arr[1],$arr[2],$arr[N] $arr[1] с $arr[2],$arr[3],$arr[N] итд
0
|
||
|
|
||||||||||||||||||||||
| 18.03.2016, 10:54 [ТС] | ||||||||||||||||||||||
|
1. входящий массив
В идеале должно получиться следующее:
0
|
||||||||||||||||||||||
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
|
||
| 18.03.2016, 11:01 | ||
|
что вы воду мутите, вот ваше ТЗ:
в 1м сообщении тоже ни слова про такое условие этот $aKeyArray вы выдумали позже, когда пытались решить задачу через какие-то грабли я вам дал алгоритм, как это делается на самом деле
0
|
||
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
|
||||||
| 18.03.2016, 11:53 | ||||||
1
|
||||||
|
|
|
| 18.03.2016, 12:43 [ТС] | |
|
полудух, Меня всегда пугали такие записи (&$n), ну не понимаю я ссылок, а потому разобраться в коде будет сложно, особенно если потребуется сделать в нем изменения, но все равно СПС, будем разбираться
0
|
|
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
|
|
| 18.03.2016, 12:55 | |
|
в гардеробе когда оставляешь одежду дают номерок
номерок это ссылка на одежду, вместо самой одежды
0
|
|
|
|
|||||||
| 18.03.2016, 13:08 [ТС] | |||||||
![]() Код работает не правильно, выводит первый элемент массива со всеми ключами, а затем у остальных элементов отсутствуют пары "Ключ => Значение", т.е. если у первого элемента все девять пар присутствуют, то у остальных то одна, то две, то 4 этих пар. Добавлено через 8 минут Вот мой вариант, но он почему то еще больше дублей плодит, чем убирает ![]()
0
|
|||||||
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
|
|
| 18.03.2016, 13:09 | |
|
а вы чего хотите, удалять И исходник, И дубль?
тогда это уже не дубль, если исходник удалить код оставляет в массиве 1 единственную запись из множества таких же если она раньше присутствовала в нескольких массивах, то будет только в первом найденном это и есть чистка дублей, а вы о чём?
0
|
|
|
|
||||||
| 18.03.2016, 13:40 [ТС] | ||||||
|
полудух, Видать я плохо ставлю задачу, пробую еще раз.
В массиве $aArray есть элементы в виде массива:
"Value1", "unique1", "unique2", "Value2", "unique3", "Value3", "unique4", "unique5", "Value4" одинаковые по соответствующим ключам: "KEY1", "KEY2", "KEY3", "KEY4", "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" Т.е. Если ( ($aArray[0]['KEY1'] == $aArray[N]['KEY1']) && ($aArray[0]['KEY4'] == $aArray[N]['KEY4']) && ($aArray[0]['KEY6'] == $aArray[N]['KEY6']) && ($aArray[0]['KEY9'] == $aArray[N]['KEY9']) ) считается что $aArray[0] есть дубль $aArray[N] и в новый массив нужно добавить один из этих элементов, т.е. один как бы удалить.
0
|
||||||
| 18.03.2016, 13:40 | |
|
Помогаю со студенческими работами здесь
20
Убрать дубли из готового отчета Как хитро убрать дубли Убрать дубли избранного материала Как убрать дубли страниц на joomla 3 + K2 Появляются дубли сайта, как их убрать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|