1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

Тема в разделе "Web - программирование", создана пользователем Wetzel, 26 мар 2008.

Статус темы:
Закрыта.
  1. Wetzel

    Wetzel Гость

    Репутация:
    0
    Это поидеи код для сравнения строк из 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 процессоре?
     
  2. PHPMaster

    PHPMaster Гость

    Репутация:
    0
    Это тебе не Дельфи и не си

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

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

    )
     
  3. Wetzel

    Wetzel Гость

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

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

    Kmet Well-Known Member
    Java Team

    Репутация:
    0
    Регистрация:
    25 май 2006
    Сообщения:
    1.036
    Симпатии:
    8
    if ($file_array1[$i] == $file_array2[$n]) {
    ....
    }
     
  5. Wetzel

    Wetzel Гость

    Репутация:
    0
    Тоже неправильно.

    Вот весь код.
    [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

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

    nws Гость

    Репутация:
    0
    $d++;
    $c++;
     
  7. Wetzel

    Wetzel Гость

    Репутация:
    0
    Огромное спасиба nws, Kmet и PHPMaster.

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

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

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

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

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

    PHPMaster Гость

    Репутация:
    0
    Wetzel, обязательно на досуге подумаю и тебе сюда отвечу
     
  9. Wetzel

    Wetzel Гость

    Репутация:
    0
    Найти и удалить дубликаты из 2-х разных фаилов.
     
  10. Kmet

    Kmet Well-Known Member
    Java Team

    Репутация:
    0
    Регистрация:
    25 май 2006
    Сообщения:
    1.036
    Симпатии:
    8
    можно попробовать стравнивать не строки, а их хеши. при правильном выборе хеш функции на больших файлах может дать значительное ускорение.
     
  11. nws

    nws Гость

    Репутация:
    0
    PHP это не тот язык на котором необходимо решать задачи подобного типа.
    Возьми ASM или С.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей