我想问一下如何在laravel中获取第一行(列名)? 现在我从存储中加载我的文件。 我试过$ contents [0];但它不起作用。
public function csvread(Request $request) {
$contents = Storage::disk('public')->get('asdf.csv');
}
谢谢!
答案 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()
添加其他标记 - 即SplFileObject
和SplFileObject::SKIP_EMPTY
您也可以选择使用预先存在的套餐;例如:http://csv.thephpleague.com/
希望这有帮助! :)