люди я полный ламер в пхп пишу програмку которая должна сравнить строки(а точнее один столбец) в csv файле и те которые совподают частично(точнее у них начало строк совподает а дальше разные)вывоились бы в другой файл, я написал тока открытие файла и вывод их на экран, плиз помогите очень нужно
я открыл документ но я не могу сделать что бы бралась строка определенного столбца и сравнивалась со всеми строками это го же столбца, затем бралась следующая строка и также сравнивалась со всеми строками и так пока не закончатся строки
PHP: <?php $row = 1; $handle = fopen("test.csv", "r"); while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { // Число столбцов $num = count($data); // Проходим по следующим за первым столбцом for ($c=1; $c < $num; $c++) { // Если первые пять (или сколько вам надо) совпадают if (substr($data[0], 0, 5) == substr($data[$c], 0, 5)) { // Выполняем неободимые действия // ... } } } fclose($handle); ?>
попробую еще раз обьяснить есть документ csv в нем 7-мь столбцом и дофига строк, в третем столбце наименование товаров, вот в 3-м столбце нужно сделать сравнение, если строки совподают по первым словам то взять по этим строкам значение из 5-го столбца и сравнить(в 5-м столбце находятся цифры) у строку в которой это число меньше удалить, но пахожих строк может быть не две а более (5-ть к примеру) нужно найти все эти совподающие строки а затем уже сравнивать ихнии значения в 5м столбце, надеюсь я понятно изложил поставленную задачу
постановка - жесть, приведите наглядный пример. смотря что значит "похожи". в моем примере проверяется соответствие первых 5 символов.
есть такая база, нужно сравнивать строки столбца С, как видете начало у них может быть одинаковое а конец разный, и такие похожие строки раскиданны по всему документу, а в столбце E есть числа, это кол-во кликов, при нахождении схожих строк в столбце С должны сравниваться значения столбца Е и из всех похожих строк оставлятся та у которой значение в столбце С максимальное, а все остольные похожие строки удалятся, надеюсь так более ясн будет, сорри за весь бред который пишу(
А в первом столбце у похожих предметов не одно и то же? Если нет, то вам надо определить, какие строки считать похожими. Например сравнивать по первому слову, по первым N символам, и т.п.
нет не одно и тоже в первом столбце нету названия фирм и модели продукции, сравнивать можно по первым словам но эти N символы разные у всех, можно сравнивать по словам которые находятся в первом столбце
То есть Вам нужны лидеры по категориям? PHP: <?php $handle = fopen("test.csv", "r"); while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { // если значение в 4-м столбце больше максимального для этой категории // сохраняем значения if ($data[4] > $results[$data[0]]['max']) { $results[$data[0]]['max'] = $data[4]; $results[$data[0]]['name'] = $data[2]; } } fclose($handle); print_r($results); ?>
и место print_r можно что то использовать то оно в браузере выводится все в одну строку и ниче не понятно(
у меня есть еще такой вопросик, можно ли при сравнении строки сохранить только то что совпало а остальное из строки удалить, к примеру в третем столбце есть строка Крепеж автомобильный Tetrax Ego Charcoal при сравнении со всеми остальными строками данного столбца то у него получается одинаковая часть с остальными строками Крепеж автомобильный Tetrax , вот именно эту часть строки сохранить а все остальное удалить, такое реально?!
или вообще как то обрезать до определенного момента к примеру в строке Навигационная система GPS VIO Expert 4.3'' Infinity-900 оставить только Навигационная система GPS VIO, но во всех строках N число символов которые требуется обрезать разное, в общем получить ключивые слова в строках