我有一个csv文件,以这种格式构建:
| id | keyword | description | more ... |
| 1 | myKeyword | MyDescription | some stuff |
| 2 | | | some stuff |
| 3 | myKeyword | MyDescription | some stuff |
现在,我想创建一个小的PHP脚本,它只读取前三列,然后将它们保存在一个数组中。为此,我查了fgetcsv
但是没有做到这一点。然后我试着像这样:
$csv = array_map('str_getcsv', file('myFile.csv'));
但也不是这样。 我得到的文件非常混乱,这就是为什么我必须检查关键字和描述是否存在(更像是他们不是'')。
我的输出数组应该是这样的:
$array[0][0] = 1
$array[0][1] = MyKeyword
$array[0][2] = MyDescription
$array[1][0] = 3
$array[1][1] = MyKeyword
$array[1][2] = MyDescription
先谢谢你
答案 0 :(得分:0)
好的,没关系,我明白了。
我在fgetcsv
<?php
function get2DArrayFromCsv($file,$delimiter) {
if (($handle = fopen($file, "r")) !== FALSE) {
$i = 0;
while (($lineArray = fgetcsv($handle, 4000, $delimiter)) !== FALSE) {
for ($j=0; $j<count($lineArray); $j++) {
$data2DArray[$i][$j] = $lineArray[$j];
}
$i++;
}
fclose($handle);
}
return $data2DArray;
}
?>
答案 1 :(得分:0)
逐行读取CSV,并用分隔符拆分行,并将结果数组附加到结果数组。
array1 = array();
$handle = fopen("file.csv", "r");
if ($handle) {
while (($line = fgets($handle)) !== false) {
array1 = array_merge(array1, explode('|',$line);
}
}
fclose($handle);
答案 2 :(得分:0)
您可以先解析所有内容:
然后,您可以删除表中不需要的元素,也可以忽略它们。我希望它会对你有所帮助。