Помогите исправить баг

Тема в разделе "PHP", создана пользователем dalera, 8 ноя 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dalera

    dalera Создатель

    Регистр.:
    24 сен 2009
    Сообщения:
    42
    Симпатии:
    1
    Этот код должен удалить дубли синонимов.
    создал файл key.txt в него запихал базу с синонимами которую надо почистить от дублей.
    слова расположены
    бегу|бежит
    бежит|бегу
    Код:
    <?php 
    set_time_limit(0); 
    $res=array(); 
    $mass=file(”key.txt”); 
    $mass=array_unique($mass); 
    file_put_contents(’key_unique.txt’, implode(”",$mass)); 
    ?>
    запустил на локалке Parse error: syntax error, unexpected '"' in C:\AppServ\www\php.php on line 6
    может кто нибудь помоч?:(
     
  2. Alix

    Alix

    Регистр.:
    27 янв 2008
    Сообщения:
    234
    Симпатии:
    84
    1. Что за странные вариации в использовании кавычек? Приди к какому-то определенному варианту, его и юзай.
    PHP:
    <?php
        set_time_limit
    (0);
        
    $res = array();
        
    $mass file("key.txt");
        
    $mass array_unique($mass);
        
    file_put_contents("key_unique.txt"implode("",$mass));
    ?>
    2. Твой вариант не вернет уникальный массив, т.к. строки "бегу|бежит" и "бежит|бегу" - на самом деле не идентичные. Думай над более продвинутым алгоритмом, чтобы избавиться от дубликатов.
     
  3. dalera

    dalera Создатель

    Регистр.:
    24 сен 2009
    Сообщения:
    42
    Симпатии:
    1
    странно.... пять ругается.

    Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 35 bytes) in C:\AppServ\www\php.php on line 4

    Код:
    <?php 
        set_time_limit(0); 
        $res = array(); 
        $mass = file("key.txt"); 
        $mass = array_unique($mass); 
        file_put_contents("key_unique.txt", implode("",$mass)); 
    ?>
    Alix с кавычками понял, исправился))

    жаль неработает
     
  4. Alix

    Alix

    Регистр.:
    27 янв 2008
    Сообщения:
    234
    Симпатии:
    84
    Уменьшай размер файла key.txt или изменяй настройки в пхп.ини

    PS: спасибо - кнопкой! ;)
     
  5. bubchen

    bubchen Создатель

    Регистр.:
    7 окт 2006
    Сообщения:
    13
    Симпатии:
    4
    Скрипту требуется больше памяти, чем ему даёт PHP. Что можно сделать:

    1. В .htaccess добавить строку (при условии, что PHP работает под Apache:(
    Код:
    php_value memory_limit 32M    
    2. В php.ini (при условии, что вы можете его редактировать) изменить значение параметра memory_limit:
    Код:
    memory_limit 32M
    3. Добавив в index.php после:
    <?php следующий код:
    Код:
      [URL="http://www.nulled.ws/r.php?url=http%3A%2F%2Fwww.php.net%2Fini_set"]ini_set[/URL]('memory_limit', '32M');
    Если 32mb не хватает — увеличиваем дальше.

    Если речь идет о хостинге, и ни один из вариантов не подошел — пишем в саппорт :)
     
  6. FL@SH

    FL@SH Читатель

    Заблокирован
    Регистр.:
    20 июл 2008
    Сообщения:
    193
    Симпатии:
    25
    Попробуй так. По идее все обратные обратные ключи и идентичные должны отсеиваться. на работоспособность НЕ проверял, но идею думаю будет понятна
    PHP:
    <?php 
        set_time_limit
    (0); 
        
    $res = array(); 
        
    $mass file("key.txt");
        
    $keys = array(); 
        
    $ouit = array(); 
        
    $_in = array();
        
        foreach(
    $mass as $string) {
            list(
    $pram1$pram2) = explode("|"$string);
            
    $keys[$pram1][$pram2] = "1";
        }
        
        foreach(
    $keys as $key => $val) {
            
    $key trim($key); $val trim($val);
            if((
    $keys[$key][$val] != "1") AND ($keys[$val][$key] != "1")) {
                
    $ouit[$key] = $val;
            }
        }
        
        foreach(
    $ouit as $key => $val) {
            
    $_in[] = $key."|".$val;
        }
        
        
    $in array_unique($_in);
        
    $out_string implode("\n"$in);


        
    file_put_contents("key_unique.txt",$out_string);
    ?>
     
Статус темы:
Закрыта.