发布日期:2018-03-26
如何用PHP和fgetcsv方法来从一个CSV文件创建数组?+ 查看更多
如何用PHP和fgetcsv方法来从一个CSV文件创建数组?
+ 查看更多
发布日期:2018-03-10 16:48
分类:PHP
浏览次数:165
有没有人能慷慨地提供一段用fgetcsv从CSV文件创建数组的代码?
我用了如下的代码从一个简单的CSV文件创建数组,但是当我的字段之一有多个逗号,例如地址时,它就不能正确工作。
我用了如下的代码从一个简单的CSV文件创建数组,但是当我的字段之一有多个逗号,例如地址时,它就不能正确工作。
$lines =file('CSV Address.csv'); foreach($lines as $data) { list($name[],$address[],$status[]) = explode(',',$data); }
*str_getcsv也不被我的托管服务支持。
以上代码对下面这个CSV文件例子无效。第一列是名字,第二列是地址,第三列是婚姻状况。
Scott L. Aranda,"123 Main Street, Bethesda, Maryland 20816",Single
Todd D. Smith,"987 Elm Street, Alexandria, Virginia 22301",Single
Edward M. Grass,"123 Main Street, Bethesda, Maryland 20816",Married
Aaron G. Frantz,"987 Elm Street, Alexandria, Virginia 22301",Married
Ryan V. Turner,"123 Main Street, Bethesda, Maryland 20816",Single
Todd D. Smith,"987 Elm Street, Alexandria, Virginia 22301",Single
Edward M. Grass,"123 Main Street, Bethesda, Maryland 20816",Married
Aaron G. Frantz,"987 Elm Street, Alexandria, Virginia 22301",Married
Ryan V. Turner,"123 Main Street, Bethesda, Maryland 20816",Single
回答
就像你在标题中说的那样,fgetcsv正是解决之道。使用它相当简单。
Like you said in your title, fgetcsv is the way to go. It's pretty darn easy to use.
$file = fopen('myCSVFile.csv', 'r'); while (($line = fgetcsv($file)) !== FALSE) { //$line is an array of the csv elements print_r($line); } fclose($file);
你也许会想用更多的错误检查以防fopen()执行失败,但是这段代码已经可以逐行读取CSV文件并且将一行解析成数组。