我正在尝试使用PHP创建一个从CSV文件中提取信息的页面。 然后它应该用信息填充产品列表。
我的代码如下:
$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]);
会产生错误。
我不明白,因为这是一个数组?
由于 阿里
答案 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);
}
?>