私はfgetcsvで.csv(元々は外部データベースから来た)ファイルからデータを読み込んでいます。 .csvファイルの最初の行には列名が含まれ、次の行にはデータが格納されます。 これまでのところ、列名を持つ配列と、.csvファイルの行(配列としての各行)を持つ2番目の配列があります。 2番目の配列を連想配列に変換するには、どのキーを最初の配列の列名にするのですか?.csvから得られたインデックス配列を連想配列に変換する
アレイ(サイズ= 1) 0 => アレイ(サイズ= 50) 0 =>文字列 'KHK_EAN'(長さ=:ここ
// this is for Mac OS X ini_set("auto_detect_line_endings", true); // the name of the file to read $fileName = 'WebArtikel_V1-modified.csv'; // open file (get handle to file) $file = fopen($fileName, 'r'); // the array to store the csv's data $rawData = array(); // the first line of the csv $header = array(); $i = 0; while (($line = fgetcsv($file, 4096, ";")) !== FALSE) { //$line is an array of the csv elements //print_r($line); if($i == 0){ $header[] = $line; } else { $rawData[] = $line; } $i++; } fclose($file);
はのvar_dump($ヘッダ)であります7) 1 =>文字列 'StyleNumber'(長さ= 11) 2 =>文字列 'スタイル名'(長さ= 9) 3 =>文字列 'SETNAME'(長さ= 7) 4 =>文字列 'ColorNumber'(長さ= 11) 5 =>文字列 'ColorName'(長さ= 9) 6 =>文字列 'StyleSize' (長さ= 9) 7 =>文字列 'KHK_Artikel'(長さ= 11) 8 =>文字列 'PriceNew'(長さ= 8) 9 =>文字列 'PriceSale'(長さ= 9)
注:列名を持つ別の配列を含む1要素の最上位配列があります。
ザ$ RAWDATA配列:
アレイ(サイズ= 3604) 0 => アレイ(サイズ= 50) 0 =>文字列 '4055765008989'(長さ= 13) 1 =>列'長さ= 8') 3 =>文字列 'ACCESS 3' >文字列 'Blau/Marine'(長さ= 11) 6 =>文字列 '1'(長さ= 1) 7 =>文字列 '201001001-2942-1'(長さ= 16) 8 =>文字列 '199,9'(長さ= 5) 9文字列 '199,9'(長さ= 5) 1 => 配列(サイズ= 50) 0 =>文字列 '4055765008996'長さ= 13) 1 =>文字列 '201001001'(長さ= 9) 2 =>文字列 ''(長さ= 1) 3 =>文字列 'ACCESS 3'(長さ= 8) 4 =>文字列 '3924 'length(長さ= 4) 5 =>文字列' Beige/Braun '(長さ= 11) 6 =>文字列' 1 '(長さ= 1) 7 =>文字列' 201001001-3924-1 ' ) 8文字列 '199,9'(length = 5) 9文字列 '199,9'(length = 5) 2 => 配列(size = 50) 0 =>文字列 '405 (長さ= 1)3 =>文字列 'ACCESS 3'(長さ= 8) 4 =>文字列 '文字列 '2942'(長さ= 4) 5 =>文字列 'Blau/Marine'(長さ= 11) 6 =>文字列 '1'(長さ= 1) 7 =>文字列 '201002001-2942-1'長さ= 16) 8 =>文字列 '179,9'(長さ= 5) 9 =>文字列 '179,9'(長さ= 5)
注:上記と同様、ネストされた配列、そう私はarray_combine()を使うことはできません。 提案がありますか?
はい、私はその質問も見ました。しかし、csvファイルの区切り文字はセミコロンであるため、これは機能しません。コンマではないので、区切り文字を指定できるので、fgetcsv()を使う必要があります。 – mrd
ファイルでセミコロンが使用されているため、動作しませんか?コメントにはこれもありました:別のセパレータを使う方法:$ file = file( "file1.csv"、FILE_SKIP_EMPTY_LINES); $ csv = array_map( "str_getcsv"、$ file、array_fill(0、count($ file)、 ';')); – James