0

私の PHP アプリは、選択した csv ファイルをメモリにアップロードします。次に、以下に示すように、str_getcsv を使用して配列に変換します。

//get file from session variable created in upload.php
$uploadedfile = str_getcsv($_SESSION['uploadedfile'], "\n");

//remove first two rows as these contain headers
unset($uploadedfile[0]);
unset($uploadedfile[1]);

現在、配列は次のようになっています。

array(4174) {
  [2]=>
string(180) "productID,ProductBarcode,brand,productType,productName"
  [3]=>
string(178) "productID,ProductBarcode,brand,productType,productName"

各行をループして、コンマ区切りの値を多次元配列に分解する必要があります。したがって、次のようになります。

array() {
 [row2]=>
   "productID => 001"
   "ProductBarcode=>101010"
   "brand=>apple"
   "productType=>notebook"
   "productName=>Macbook pro"
 [row3]=>
   "productID => 002"
   "ProductBarcode=>20202"
   "brand=>apple"
   "productType=>desktop"
   "productName=>iMac"
 }

この質問は同様のことに答えようとしていると思いますが、答えは提供されませんでした: PHP:角括弧間のカンマ区切り値を多次元配列に解析する

4

1 に答える 1

1

fileファイル行を配列に読み込むために使用してみてください。次に、ヘッダーとして使用する最初の行を で取得しarray_shiftます。その後、ループして行を配列に読み込み、str_getcsvヘッダーと組み合わせます。

$uploadedfile = file($_SESSION['uploadedfile'], FILE_IGNORE_NEW_LINES);
$headers = array_shift($uploadedfile);
unset($uploadedfile[0]);

foreach($uploadedfile as $line) {
    $data[] = array_combine($headers, str_getcsv($line));
}
于 2013-11-05T15:51:04.643 に答える