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

Статус
В этой теме нельзя размещать новые ответы.

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
417
Реакции
49
Всем привет.
Есть список словосочетаний, по одной на строку
Помогите написать скрипт, который бы почекал этот список на дубли, и главное, найденные дубли сложил в отдельный файл.
 
Код:
<?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";
Скрытое содержимое доступно для зарегистрированных пользователей!
 
PHP:
$words = file( 'words.txt' );

$words_cnt = array_count_values( $words );

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

    return ( $v > 1 );
});

file_put_contents( 'log.txt', implode( ', ', array_keys( $duplicates ) ) );
 
Спасибо, вроде все почистилось правильно, только не совсем понятно как работает return ( $v > 1 ); в скрипте Для просмотра ссылки Войди или Зарегистрируйся
Это такая укороченная запись условия
Код:
if( $v > 1 )
return $v;
?
Просто первый раз такое вижу, давно такое ввели? Есть где поподробнее почитать?
 
Нет, это
1. вычислить логическое выражение $v>1 (true|false). Думаю, дальше пояснять не нужно?
2. вернуть его (то самое, полученное true|false)
Просто первый раз такое вижу, давно такое ввели? Есть где поподробнее почитать?
да-а-авно.
 
esche, харе глумиться над человеком.. ))

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

тут всё просто.. возьмем, например, русский язык, когда вам задают вопрос, например, "вы гей?", вы же не отвечаете "если я гей, тогда да, а если не гей, тогда нет".. вы просто отвечаете "да" или "нет".. тут так-же..
 
esche, харе глумиться над человеком.. ))
Во избежание недоразумений.. Никакого глума.. Исключительно попытка указать на действительно "давнее" введение этой "фишки" (в принципе 2 базовых операции - вычисление логического значения и его возврат)

p.s. А пример-то подобрал.. кхм-кхм
 
  • Нравится
Реакции: BDSG
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху