在laravel中获取第一行csv文件

时间:2016-06-29 14:30:08

标签: php laravel-5.2

我想问一下如何在laravel中获取第一行(列名)? 现在我从存储中加载我的文件。 我试过$ contents [0];但它不起作用。

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

谢谢!

1 个答案:

答案 0 :(得分:3)

我不了解Laravel所以我不能专门评论os.system("stty opost -igncr")的功能。但是,我查看了documentation,其中说明了以下内容:

  

get方法可用于检索给定文件的内容。该方法将返回文件的原始字符串内容

因此,假设您成功找到并调用了一个文件,Storage是一个字符串 - 解除引用$contents只会返回该字符串的第一个字符。不是你想要的,显然!

我在问题评论中同意@JonStirling,并尝试直接用fgetcsv()解析csv。或者,如果你想更加基于对象,你可以使用SplFileObject(),它可以读取和迭代CSV文件,给定适当的标志。

这是PHP文档中的示例#2的副本:

$contents[0]

您当然也需要将原始文件路径传递给$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); } - this answer should be useful

最后,如果您的CSV有空行,则可能需要向SplFileObject()添加其他标记 - 即SplFileObjectSplFileObject::SKIP_EMPTY

您也可以选择使用预先存在的套餐;例如:http://csv.thephpleague.com/

希望这有帮助! :)