[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удаление дублирующихся записей
vergin
Есть простой скрипт который считывает данные из файла в массив. Задача состоит в том ,чтобы перебрать все элементы массива и элемент не дублируется - записать этот элемент в другой файл.

if(isset($_GET['file']))
{
$f = $_GET['file'];
$arr = file($f);
$out = array();
$file = fopen(substr($f, 0, (strlen($f)-4)).'_new.txt', 'w');
$count = count($arr);
$unique = 0;
foreach($arr as $val)
{
if(!in_array($val, $out))
{
$out[] = $val;
fwrite($file, $val);
$unique++;
}
}

fclose($file);
echo "General amount: ".$count."<br />";
echo "Unique amount: ".$unique."<br />";
}

где $arr - массив с записями с исходящего файла, а $out - контрольный массив, по которому происходит проверка на уникальность элемента


Минус данного способа в том, что при увеличении количества уникальных элементов - скорость выполнения, а соответственно и записи в файл, радикально падает. Подскажите, как оптимизировать процесс удаления дубликатов



Спустя 14 минут, 52 секунды (7.12.2010 - 00:46) FatCat написал(а):
$arr = array_unique($arr);

Спустя 10 часов, 28 минут, 43 секунды (7.12.2010 - 11:15) vergin написал(а):
к сожалению скорость не изменилась, видимо проблема не в увеличении массива. А за $arr = array_unique($arr); - спасибо, надо побольше учить матчасть!

Спустя 2 часа, 34 минуты, 50 секунд (7.12.2010 - 13:50) SlavaFr написал(а):
a почему бы для этих целей не использовать просто таблицу с unique полем?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.