Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Алгоритм работы с csv

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
KApriS
Отправлено: 25 Июля, 2016 - 10:22:56
Post Id


Частый гость


Покинул форум
Сообщений всего: 133
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Приветствую, уважаемые гуру и профессионалы.
Прошу помощи в вопросе.
Есть два файла csv. В среднем по 40тыс записей в каждом.
Задача Сравнить их по артикулу, и одноименному артикулу из файла1 в файле2 проставить остатки.
Что делаю я:
1) читаю файл 1, забираю артикулы и остатки в два массива с одинаковыми индексами (art ost)
2) читаю файл 2, а дальше гадство...
просто приведу кусок кода
PHP:
скопировать код в буфер обмена
  1.         while (!feof($f)) {
  2.                 $s=fgets($f); //строка
  3.                 $a=explode(";",$s); //массив переменных в строке
  4.                 /*если артикул есть в массиве артикулов для остатков*/
  5.                 if (in_array($a[1], $art_array) ) {
  6.                         $tek_key = array_search($a[1], $art_array); /* определить индекс*/
  7.                         $a[2] = iconv( "windows-1251", "utf-8", $ost_array[$tek_key]); /* в колонку остатков присвоить значение из массива остатков с указанным индексом */
  8.                 }
  9.                 fputcsv($r, $a, ";");
  10.         }

то есть я 40тысяч раз заставляю искать уникальное выражение в массиве из 40тыс элементов.
Подскажите мне другие алгоритмы перезаписи csv. Что-то где-то очевидное я упускаю. Но не могу найти другого решения..
 
 Top
Fart
Отправлено: 27 Июля, 2016 - 16:57:14
Post Id



Посетитель


Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016  


Помог: 10 раз(а)




необходим код скрипта где более полно описано чтение файла csv. ты же указываешь что их 2... не видно... даже вообще есть ли чтение 1го файла

PS ИМХО считаю, что начало, того куска что имеется, некорректным.

(Отредактировано автором: 27 Июля, 2016 - 16:59:32)

 
 Top
Int_20h
Отправлено: 29 Июля, 2016 - 19:56:40
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2014  


Помог: 0 раз(а)




KApriS пишет:
Подскажите мне другие алгоритмы перезаписи csv. Что-то где-то очевидное я упускаю. Но не могу найти другого решения..


Во-первых, в php есть функция fgetcsv, чтобы не городить огород. Во-вторых, если вы уже создали массив в ключами в виде артикулов, зачем еще array_search?!!!!

Артикулы в ключе? Ну и вперед:

if (isset($art_array[$art2])) $art_array[$art2] = $new_value;
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB