поиск файла CSV с помощью PHP - PullRequest
       4

поиск файла CSV с помощью PHP

1 голос
/ 16 декабря 2010

У меня есть CSV-файл, который выглядит следующим образом:

603629,0,ATLV0008,"Vendor1",1942.60,11/04/2010,1942.60,9/1-9/30/10,EFT-JP
603627,2,ATLV0008,"Vendor1",1242.40,11/04/2010,1242.40,7/1-7/31/10,EFT-JP
600023,0,FLD4V0003,"Vendor2",1950.00,06/15/2010,1950.00,6/14/10 Request,EFT-JP
600024,0,FLD4V0003,"Vendor2",1800.00,06/15/2010,1800.00,6/14/10 Request,EFT-JP
603631,0,ATLV5066,"Vendor2",1000.00,11/09/2010,1000.00,11/4/10 Check Request,PM2
603647,0,ATLV5027,"DVendor3",2799.80,11/15/2010,2799.80,10/1-10/31/10 Bishop,PM2
603642,5,ATLV5027,"Vendor3",482.40,11/15/2010,482.40,10/1-10/18/10 Allen,PM2
603653,0,ATLV0403,"Vendor4",931.21,11/17/2010,931.21,9/1-9/30/10,EFT-JP
603661,0,ATLV0105,"Vendor5",26.75,11/19/2010,26.75,093139,PM2
603660,1,ATLV0105,"Vendor5",5.35,11/19/2010,5.35,093472,PM2

Я использую fgetcsv, чтобы импортировать этот файл, а затем экспортировать его в XML и правильно отобразить его с помощью HTML.

Это должно быть организовано в соответствии с офисом (ATL в 2n поле) и поставщиком. Файл не будет отсортирован каким-либо образом. Какой лучший способ поиска по файлу?

Это то, что я имею до сих пор:

if (($handle = fopen('upload/ATLANTA.csv', "r")) !== FALSE) { 
      while (($data = fgetcsv($handle, 1000, ","))) {  
         $currOffice = substr($data[2], 0, 3);
                  foreach ($data as $key => $d) {
                    if ($key != 1){
                    $invoiceData = "<div class=\"field\">" .$d . "</div>";
                    }
                    $prevVendor = $data[3];
                    $prevOffice = $currOffice;
                } 
      }
  }

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

Во-первых (и это только я), я бы очистил данные, создав многомерный массив, например ...

if (file_exists('ATLANTA.csv') != FALSE) {
    $handle  = file_get_contents('ATLANTA.csv') or exit;
    $handle_row = explode("\n", $handle);
    foreach ($handle_row as $key => $val) {
        $row_array = explode(',', $val);
        foreach ($row_array as $key => $val) {
            $row_array[$key] = trim(str_replace('"', '', $val));
            }
        $complete[] = $row_array;
        }
    }

Затем передайте $ complete через следующую функцию для сортировки по значениям массивов второго уровня.

$array_elem_01 = 2; // Which Column to Sort By
$array_elem_02 = 3; // <-- Edit
if (isset($complete)) {
    foreach ($complete as $key => $val) {
        $sort_01[$key] = $val[$array_elem_01] . $val[$array_elem_02]; // <-- Edit
        }
    asort($sort_01);
    foreach ($sort_01 as $key => $val) {
        $output[] = $complete[$key];
        }
    }
return $output;
1 голос
/ 16 декабря 2010

Посмотрите справочную страницу PHP для функции array_search () .

Это не совсем то, что вам нужно, но самый последний пользовательский комментарий на странице предоставляет функцию поиска в многоуровневом массиве, которая, как мне кажется, идеально подойдет для ваших требований.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...