Сравнение в пхп

  • Автор темы Wetzel
  • Дата начала
Статус
Закрыто для дальнейших ответов.
W

Wetzel

#1
Это поидеи код для сравнения строк из 2 разных массивов. Один как видите 10 строчный другой 100.
Но почему он неработает?

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

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

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

PHPMaster

#2
Это тебе не Дельфи и не си

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

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

)
 
W

Wetzel

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

И в моём и в твоём варианте выдаёт ошибку:
syntax error, unexpected T_VARIABLE, expecting '
 
W

Wetzel

#5
Тоже неправильно.

Вот весь код.
[codebox]<?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"));
?>[/codebox]

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

Так как будет правильно?
 
W

Wetzel

#7
Огромное спасиба nws, Kmet и PHPMaster.

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

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

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

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

Вот мне надо допустим разобраться с 2 массивами, один на скажем на миллион элементов а другой на два миллиона элементов.
Это он месяц будет только сравнивать?
 
P

PHPMaster

#8
Wetzel, обязательно на досуге подумаю и тебе сюда отвечу
 
W

Wetzel

#9
Найти и удалить дубликаты из 2-х разных фаилов.
 

Kmet

Java Team
25.05.2006
1 036
8
#10
можно попробовать стравнивать не строки, а их хеши. при правильном выборе хеш функции на больших файлах может дать значительное ускорение.
 
N
#11
PHP это не тот язык на котором необходимо решать задачи подобного типа.
Возьми ASM или С.
 
Статус
Закрыто для дальнейших ответов.