За последние 24 часа нас посетили 16548 программистов и 1578 роботов. Сейчас ищут 932 программиста ...

работа со строками в csv файлах

Тема в разделе "PHP для новичков", создана пользователем bookin, 11 ноя 2009.

  1. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    люди я полный ламер в пхп пишу програмку которая должна сравнить строки(а точнее один столбец) в csv файле и те которые совподают частично(точнее у них начало строк совподает а дальше разные)вывоились бы в другой файл, я написал тока открытие файла и вывод их на экран, плиз помогите очень нужно
     
  2. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    либо: бюджет?
    либо: копай сам в сторону функции fgetcsv и strpos
     
  3. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    я открыл документ но я не могу сделать что бы бралась строка определенного столбца и сравнивалась со всеми строками это го же столбца, затем бралась следующая строка и также сравнивалась со всеми строками и так пока не закончатся строки
     
  4. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    причем если некоторые слова совпадают в двух строках то они заносились бы в массив
     
  5. gietos

    gietos Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    6
    Симпатии:
    0
    PHP:
    1. <?php
    2. $row = 1;
    3. $handle = fopen("test.csv", "r");
    4. while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    5.     // Число столбцов
    6.     $num = count($data);
    7.     // Проходим по следующим за первым столбцом
    8.     for ($c=1; $c < $num; $c++) {
    9.         // Если первые пять (или сколько вам надо) совпадают
    10.         if (substr($data[0], 0, 5) == substr($data[$c], 0, 5)) {
    11.             // Выполняем неободимые действия
    12.             // ...
    13.         }
    14.     }
    15. }
    16. fclose($handle);
    17. ?>
     
  6. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    попробую еще раз обьяснить есть документ csv в нем 7-мь столбцом и дофига строк, в третем столбце наименование товаров, вот в 3-м столбце нужно сделать сравнение, если строки совподают по первым словам то взять по этим строкам значение из 5-го столбца и сравнить(в 5-м столбце находятся цифры) у строку в которой это число меньше удалить, но пахожих строк может быть не две а более (5-ть к примеру) нужно найти все эти совподающие строки а затем уже сравнивать ихнии значения в 5м столбце, надеюсь я понятно изложил поставленную задачу
     
  7. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    gietos
    как в твоем примере вывести в массив именно те строки которые похожи ??
     
  8. gietos

    gietos Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    6
    Симпатии:
    0
    постановка - жесть, приведите наглядный пример.

    смотря что значит "похожи". в моем примере проверяется соответствие первых 5 символов.
     
  9. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    а те строки у которых больше нету совпадений вывести в другой массив ?!
     
  10. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    [​IMG]



    есть такая база, нужно сравнивать строки столбца С, как видете начало у них может быть одинаковое а конец разный, и такие похожие строки раскиданны по всему документу, а в столбце E есть числа, это кол-во кликов, при нахождении схожих строк в столбце С должны сравниваться значения столбца Е и из всех похожих строк оставлятся та у которой значение в столбце С максимальное, а все остольные похожие строки удалятся, надеюсь так более ясн будет, сорри за весь бред который пишу(
     
  11. gietos

    gietos Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    6
    Симпатии:
    0
    А в первом столбце у похожих предметов не одно и то же? Если нет, то вам надо определить, какие строки считать похожими. Например сравнивать по первому слову, по первым N символам, и т.п.
     
  12. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    нет не одно и тоже в первом столбце нету названия фирм и модели продукции, сравнивать можно по первым словам но эти N символы разные у всех, можно сравнивать по словам которые находятся в первом столбце
     
  13. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    точнее место этих N символов брать слова из первого столбца
     
  14. gietos

    gietos Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    6
    Симпатии:
    0
    То есть Вам нужны лидеры по категориям?

    PHP:
    1. <?php
    2.  
    3. $handle = fopen("test.csv", "r");
    4. while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    5.     // если значение в 4-м столбце больше максимального для этой категории
    6.     // сохраняем значения
    7.     if ($data[4] > $results[$data[0]]['max']) {
    8.         $results[$data[0]]['max'] = $data[4];
    9.         $results[$data[0]]['name'] = $data[2];
    10.     }
    11. }
    12. fclose($handle);
    13.  
    14. print_r($results);
    15.  
    16. ?>
     
  15. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    а так же ток минемальное можно найти?
     
  16. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    и место print_r можно что то использовать то оно в браузере выводится все в одну строку и ниче не понятно(
     
  17. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Код (Text):
    1. echo '<pre>';
    2. print_r($value);
    3. echo '</pre>';
     
  18. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    у меня есть еще такой вопросик, можно ли при сравнении строки сохранить только то что совпало а остальное из строки удалить, к примеру в третем столбце есть строка Крепеж автомобильный Tetrax Ego Charcoal при сравнении со всеми остальными строками данного столбца то у него получается одинаковая часть с остальными строками Крепеж автомобильный Tetrax , вот именно эту часть строки сохранить а все остальное удалить, такое реально?!
     
  19. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    или вообще как то обрезать до определенного момента к примеру в строке Навигационная система GPS VIO Expert 4.3'' Infinity-900 оставить только Навигационная система GPS VIO, но во всех строках N число символов которые требуется обрезать разное, в общем получить ключивые слова в строках