Author Topic: Пересечения массивов  (Read 1914 times)

0 Members and 1 Guest are viewing this topic.

Санта

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
Пересечения массивов
« on: October 21, 2019, 11:25:55 PM »
Привет! Есть 2 массива со строками - подскажите как лучше получить значения которые будут свтречаться в обоих массивайх??

Shada

  • Освоившийся
  • **
  • Posts: 24
    • View Profile
Re: Пересечения массивов
« Reply #1 on: October 22, 2019, 08:42:13 AM »
Привет! Есть 2 массива со строками - подскажите как лучше получить значения которые будут свтречаться в обоих массивайх??

Привет!
Можно сделать например так:
Code: (clickermann) [Select]
TFREADARR("Массив.txt", $arr) // создаем массив из 1000 строк, по 10 символов в строке
$str = ""
FOR($n = 0, $n < ARRSIZE($arr))
   $str = STRCONCAT($str, ":", $arr[$n]) // склеиваем элементы одного из массивов в строку
END_CYC

// Для примера будем сравнивать массив сам с собой. Должно получиться 100% совпадений элементов.
FOR($n = 0, $n < ARRSIZE($arr))
   IF(STRPOS($str, $arr[$n]))  // ищем текст элементов массива в строке
      ARRPUSH($arr2, $arr[$n]) // найденные совпадения запоминаем
   END_IF
END_CYC
TFWRITEARR("Дубликаты.txt", $arr2) // выводим результат в файл
UNDEFINE($arr) // удаляем ненужные массивы из памяти
UNDEFINE($arr2)
HALT

Файл "Массив.txt" во вложении.

Если массивы большие и скорости работы такого алгоритма не достаточно, то можно попробовать использовать ini-файлы, примеры на форуме есть.
Вот тут замечательный пример - http://crapware.aidf.org/forum/index.php?topic=4033.msg27491#msg27491
Правда придется допилить под свою задачу, но принцип тот же - а-ля ассоциативный массив.

Санта

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
Re: Пересечения массивов
« Reply #2 on: October 22, 2019, 10:42:37 PM »
спасибо!