在PHP中读取CSV文件数据

时间:2016-04-24 14:00:48

标签: php csv foreach

我正在尝试使用PHP创建一个从CSV文件中提取信息的页面。 然后它应该用信息填充产品列表。

这是CSV文件: CSV file image

我的代码如下:

$file = file('data-example.csv');
$line = array("name", "id","price", "description");
foreach($file as $line) {   
    $csv = explode('//',$line);
    $item = $csv;
    print_r($item);

目前正在打印整个阵列。我想知道如何访问数组上的各个节点,以便我可以将它们作为变量包含在HTML表中。

由于 阿里

放大并回复回复(谢谢!): 这是修改后的代码,使用fgetcsv

if (($handle = fopen("data.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    echo($data[1][1]);        
}
fclose($handle);
}

这似乎有效,但返回列内容。这是数据(data.csv):

"Dandelion","30","13.99","Dandelion 30 "
"Daisy","40","20.99","Daisy 40 "
"Cress","27","10.99","Cress 27 "
"Coral","17","6.99","Coral 17 ",
"Honeysuckle","40","17.99","Honeysuckle 40 "
"Rose","27","9.99","Rose 27" 

” (在蒲公英,黛西,水芹,珊瑚,金银花和玫瑰有一个新系列)

当我尝试echo($data[1]);时,它会按照描述获得整列,即30 40 27 17 40 27但echo($data[1][1]);返回“342142”,echo($data[1][1][1]);会产生错误。 我不明白,因为这是一个数组?

由于 阿里

1 个答案:

答案 0 :(得分:0)

您应该使用本机php函数来读取csv文件,例如str_getcsv

类似的东西:

$Data = str_getcsv($CsvString, "\n"); //parse the rows
foreach($Data as &$Row){ 
   $Row = str_getcsv($Row, ";"); //parse the items in rows 
} 

或者你可以使用fgetcsv解析它为CSV格式的字段读取的行,并返回一个包含读取字段的数组,即:

<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}
?>