У меня есть файл CSV и хотелось бы пересчитать повторяющиеся слова в столбце из 9000 строк.
пример файла
благодаря
ОК
хороший
благодаря
хороший
благодаря
- laravel csv, как получить файл csv с передними нулями
- Мой экспорт csv, отображающий html, как избавиться?
- загрузка из CSV и пересылка на другой URL-адрес
- импортировать данные txt / csv в базу данных в соответствии с заголовком таблицы базы данных
- Поиск по значению, разделенному запятыми
- Запись в несколько (разделяющих) CSV-файлов с помощью PHP
требуемый результат был бы чем-то вроде
thanks = 3, ok = 1, nice = 2.
Я нашел следующий PHP-код, но я не мог заставить его работать, и скопировал содержимое CSV-файла в file.txt
Я делаю что-то неправильно?
<?php $file = (''C:\Users\wnmb4793\Desktop\Test\file.txt''); $fh = fopen($file, 'rb'); $tag = array(); while($col = fgetcsv($fh)) { if (isset($tag[$col[2]])) { $tag[$col[2]]++; } else { $tag[$col[2]] = 1; } ?>
Всего несколько ошибок. Ваш код работает.
$file = 'C:\Users\wnmb4793\Desktop\Test\file.txt'; $fh = fopen($file, 'rb'); $tag = array(); while($col = fgetcsv($fh)) { $value = $col[0]; // change 0 to column number you need, 0 - first if ( isset($tag[$value]) ) $tag[$value]++; else $tag[$value] = 1; } print_r($tag);
результат:
Array ( [thanks] => 3 [ok] => 1 [nice] => 2 )
Первая проблема, которую я вижу, такова:
$file = (''C:\Users\wnmb4793\Desktop\Test\file.txt'');
Должно быть
$file = ('C:\Users\wnmb4793\Desktop\Test\file.txt');
Следующий шаг
Вам нужно прокрутить каждое слово в файле. Что-то вроде:
while we are not at the end of the file. if( we have seen this word before ) // Think about the isset() method. find it's entry and add one to it's value else add a new entry, and set it's value to 1. end while
Я дал вам псевдокод. Теперь превратите его в PHP! 🙂