所以,我得到了一个我在PHP中正确导入的CSV文件。
function csv_to_array($filename='', $delimiter=';')
{
if(!file_exists($filename) || !is_readable($filename))
return FALSE;
$header = NULL;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE)
{
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
{
if(!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
}
fclose($handle);
}
return $data;
}
echo '<pre>';
$product_csv = csv_to_array("$underfolder/$value");
print_r($product_csv);
echo '</pre>';
这样可以显示结果:
Array (
[0] => Array
(
[Name] => product name xyz
[Description] => der trefa a as sadfse
[TAGS] => tag1 tag2 tag3
[360] => yes
[VR] => no
)
)
但我如何回应$product_csv
的值?就像我想打印出“产品名称xyz”一样?我试过echo $product_csv["0"]['Name']
,但没有任何结果......
var_dump(array_keys($product_csv[0]));
给了我:
array(5) { [0]=> string(7) "Name" [1]=> string(11) "Description" [2]=> string(4) "TAGS" [3]=> int(360) [4]=> string(2) "VR" }
答案 0 :(得分:3)
正如您在var_dump(array_keys($product_csv[0]));
输出中看到的那样:string(7) "Name"
,必须有3个不可见字符,因为Name
只有4个字符而不是7个。
尝试通过替换:
来修剪它们$header = $row;
使用:
$header = array_map('trim', $row);
很可能是Byte Order Mark (BOM)。如果您要创建此文件,请检查编辑器以查看它是否使用BOM保存它,如果可能,请将其禁用。