Скрипт чека на дубли и получение этих дублей в отдельный файл

Тема в разделе "Как сделать...", создана пользователем verfaa, 6 сен 2013.

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

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    371
    Симпатии:
    41
    Всем привет.
    Есть список словосочетаний, по одной на строку
    Помогите написать скрипт, который бы почекал этот список на дубли, и главное, найденные дубли сложил в отдельный файл.
     
  2. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    Код:
    <?php
    $words = array('маша','хороша','каша','наша','маша','федя','петя','не'); // твой массив
    
    // оставляем уникальные и пишем в файл
    $unique_words = array_unique($words);
    file_put_contents('words.txt',implode("\n",$unique_words));
    
    // считаем дубли
    $word_counts = array_count_values ($words);
    foreach ($word_counts as $word => $count)
        if ($count > 1) echo "$word встречается $count раз(а)<br>\n";
    
     
    verfaa нравится это.
  3. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    PHP:
    $words file'words.txt' );

    $words_cnt array_count_values$words );

    $duplicates array_filter$words_cnt, function( $v ){

        return ( 
    $v );
    });

    file_put_contents'log.txt'implode', 'array_keys$duplicates ) ) );
     
    verfaa нравится это.
  4. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    371
    Симпатии:
    41
    Спасибо, вроде все почистилось правильно, только не совсем понятно как работает return ( $v > 1 ); в скрипте BDSG
    Это такая укороченная запись условия
    Код:
    if( $v > 1 )
    return $v;
    ?
    Просто первый раз такое вижу, давно такое ввели? Есть где поподробнее почитать?
     
  5. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    Нет, это
    1. вычислить логическое выражение $v>1 (true|false). Думаю, дальше пояснять не нужно?
    2. вернуть его (то самое, полученное true|false)
    да-а-авно.
     
  6. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    esche, харе глумиться над человеком.. ))

    verfaa, такая конструкция допустима в любом языке, работающем со сравнениями и возвратом значения.. просто зачастую горе коддеры пишут что-то наподобие:
    if( true == $some ){
    $return_value = true;
    }
    else{
    $return_value = false;
    }
    return $return_value;
    тогда как сравнение "true == $some" само по себе уже возвращает булевый результат..

    тут всё просто.. возьмем, например, русский язык, когда вам задают вопрос, например, "вы гей?", вы же не отвечаете "если я гей, тогда да, а если не гей, тогда нет".. вы просто отвечаете "да" или "нет".. тут так-же..
     
  7. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    Во избежание недоразумений.. Никакого глума.. Исключительно попытка указать на действительно "давнее" введение этой "фишки" (в принципе 2 базовых операции - вычисление логического значения и его возврат)

    p.s. А пример-то подобрал.. кхм-кхм
     
    BDSG нравится это.
Статус темы:
Закрыта.