2016-06-29 28 views
0

laravelで最初の行(列名)を取得するにはどうすればいいですか? 今のところ私はストレージからファイルを読み込みます。 私は$ contents [0]を試しました。しかしそれはうまくいかなかった。laravelでcsvファイルの最初の行を取得

public function csvread(Request $request) { 
$contents = Storage::disk('public')->get('asdf.csv'); 
} 

ありがとうございます!

+1

[fgetcsv](http://php.net/fgetcsv)に問題がありますか? –

+0

あなたが行っている電話が成功したかどうか確認しましたか? '$ contents'の値をダンプして期待値を得ていることを確認してください。私はLaravelに慣れていませんが、何らかのファイルオブジェクトを返すか、失敗した場合は 'false'を返すと推測します...エラーメッセージが表示されますか?もしそうなら、それを参照のために質問に加えるべきです。 –

答えて

3

私はLaravelを知らないので、特にStorageの機能についてはコメントできません。しかし、私はdocumentationを見て、次のように述べています。

getメソッドは、指定されたファイルの内容を取得するために使用できます。ファイルの生の文字列の内容は、あなたが成功したとファイルを読ん行われるコールを想定し、

だから、メソッドによって返されます$contentsは、文字列である - と$contents[0]を逆参照することだけでの最初の文字を返すために起こっています文字列あなたが望むものではなく、はっきりと!

私は質問のコメントに同意しており、fgetcsv()で直接CSVを解析しようとしています。また、よりオブジェクトベースにしたい場合は、SplFileObject()を使用して、適切なフラグを指定してCSVファイルを読み込んで繰り返し処理することができます。ここで

は、PHPのドキュメントからの例#2のコピーです:

$file = new SplFileObject("animals.csv"); 
$file->setFlags(SplFileObject::READ_CSV); 
foreach ($file as $row) { 
    list($animal, $class, $legs) = $row; 
    printf("A %s is a %s with %d legs\n", $animal, $class, $legs); 
} 

あなたはもちろん、あまりにもSplFileObject()に渡すのorignalファイルパスが必要になります - 最後にthis answer should be useful

、あなたのCSVが空がある場合にフラグを追加する必要があります。つまり、SplFileObject::SKIP_EMPTYSplFileObject::READ_AHEAD

既存のパッケージを使用することもできます。例:http://csv.thephpleague.com/

これが役に立ちます。 :)

+0

ありがとうございます。私は自分のファイルのURLを得ることにいくつかの問題がありました。しかし、ついに私はそれを解決しました。あなたの答えは非常に網羅的です。 –

+0

もう1つ質問がありますが、列の1つが「名前」または「姓」になっているかどうかを確認する可能性はありますか? –

+0

こんにちは。ちょうどこれを見た。あなたのデータに依存しますが、csvの最初の行に "ヘッダー"行が含まれていると仮定すると、最初の行に '姓'が 'in_array()'を含むことを確認できますか? –

関連する問題