Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сравнение в пхп
Форум программистов > Интернет и сети > Web-программирование > PHP программирование
Wetzel
Это поидеи код для сравнения строк из 2 разных массивов. Один как видите 10 строчный другой 100.
Но почему он неработает?

CODE
for ($i=0;$i<10;$i++)
{
for ($n=0;$n<100;$n++)
{
$d++;
if $file_array1[$i] = $file_array2[$n]
$var++
}
}


В итоге должно получиться 1000 сравнений. Разультат одинаковых элементов - $var.
Может есть другие варианты сравнения?

А если надо выполнить 1mln сравнений скажем 6-8 байтовых строк на идентичность, на сколько это выполнимо на пхп и за какое примерно время выполнит сравнение пхп скрипт скажем на 1Ghz процессоре?
PHPMaster
Это тебе не Дельфи и не си

А во-вторых - сравнение происходит не знаком "=", а знаком "=="
Вот сейчас у тебя такой код:

Если елементу $file_array1[$i] присвоить значение $file_array2[$n], то $var++

)
Wetzel
Пытался сделать и как ты сказал, пытался даже написать ====, оператора жа 3 %)))))))))))), вот только всё неправильно. Подскажите что не так.

И в моём и в твоём варианте выдаёт ошибку:
syntax error, unexpected T_VARIABLE, expecting '
Kmet
if ($file_array1[$i] == $file_array2[$n]) {
....
}
Wetzel
Тоже неправильно.

Вот весь код.
CODE
<?php
echo ("Start time: ");
echo (date("H:i:s"));
echo("<br>");


$file_array1 = file("c:\www\1.txt");
$file_array2 = file("c:\www\2.txt");

for ($i=0;$i<100;$i++)
{
for ($n=0;$n<10;$n++)
{
$d++
If ($file_array1[$i] == $file_array2[$n])
{
$c++
}
}
}


echo("Сравнений:");
echo $d;
echo("<br>");
echo("Совпадений:");
echo $c;
echo("<br>");
echo ("End time: ");
echo (date("H:i:s"));
?>


Выдаёт ошибку:
Parse error: syntax error, unexpected T_IF in C:\Documents and Settings\Admin\Local Settings\Temp\prev5~.php on line 15

Так как будет правильно?
nws
$d++;
$c++;
Wetzel
Огромное спасиба nws, Kmet и PHPMaster.

Проблема была решена.

Вот результаты работы. На примерно 1Ghz процессоре. Компилятор Rapid PHP.

Start time: 06:32:02
Сравнений: 871439400
Совпадений: 22052
End time: 07:08:06

2 массива один почти 25000 другой почти 40000. Сравнивал моим кодом аж почти 40 мин.
Как добиться большей скорости? Сравнивать строковыми функциями?
Может компилятор не самый лучший?

Вот мне надо допустим разобраться с 2 массивами, один на скажем на миллион элементов а другой на два миллиона элементов.
Это он месяц будет только сравнивать?
PHPMaster
Wetzel, обязательно на досуге подумаю и тебе сюда отвечу
sax_ol
Цитата(Wetzel @ 28:03:2008 - 07:47) *
Вот мне надо допустим разобраться с 2 массивами, один на скажем на миллион элементов а другой на два миллиона элементов.
Это он месяц будет только сравнивать?

Вы бы про задачу больше рассказали, может тогда и пути решения другие нашлись ...
Wetzel
Найти и удалить дубликаты из 2-х разных фаилов.
sax_ol
Wetzel
А что такое - "дубликаты" ?
Kmet
можно попробовать стравнивать не строки, а их хеши. при правильном выборе хеш функции на больших файлах может дать значительное ускорение.
nws
PHP это не тот язык на котором необходимо решать задачи подобного типа.
Возьми ASM или С.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2008 IPS, Inc.