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
Форумы портала PHP.SU :: Версия для печати :: Алгоритм работы с csv
Форумы портала PHP.SU » » Вопросы новичков » Алгоритм работы с csv

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

1. KApriS - 25 Июля, 2016 - 10:22:56 - перейти к сообщению
Приветствую, уважаемые гуру и профессионалы.
Прошу помощи в вопросе.
Есть два файла 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. Что-то где-то очевидное я упускаю. Но не могу найти другого решения..
2. Fart - 27 Июля, 2016 - 16:57:14 - перейти к сообщению
необходим код скрипта где более полно описано чтение файла csv. ты же указываешь что их 2... не видно... даже вообще есть ли чтение 1го файла

PS ИМХО считаю, что начало, того куска что имеется, некорректным.
3. Int_20h - 29 Июля, 2016 - 19:56:40 - перейти к сообщению
KApriS пишет:
Подскажите мне другие алгоритмы перезаписи csv. Что-то где-то очевидное я упускаю. Но не могу найти другого решения..


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

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

if (isset($art_array[$art2])) $art_array[$art2] = $new_value;

 

Powered by ExBB FM 1.0 RC1