我有一個包含多個標題的CSV文件。解析CSV以獲取特定列
我只需要這些列中的大約5個。
我試圖讓這些變成更易於管理的格式(變量?),然後我可以做一個檢查他們的值。
我有以下代碼:
$headers = array('NAME', 'EMAIL');
$picked = array();
$theData = array();
$isFirstRow = true;
if (($handle = fopen($uploadedFile, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$numCols = count($data);
$row = array();
if($isFirstRow) {
for($c=0; $c<$numCols; $c++) {
if(!in_array($data[$c], $headers)) {
continue;
} else {
$picked[] = $c;
$isFirstRow = false;
}
}
} else {
for($c=0; $c < $numCols; $c++) {
if(in_array($c, $picked)) {
$row[] = $data[$c];
$theData[] = $row;
}
}
}
}
fclose($handle);
}
var_dump($theData);
此輸出以下:
array (size=xxxxxx)
0 =>
array (size=1)
0 => string 'John Doe' (length=8)
1 =>
array (size=2)
0 => string 'John Doe' (length=8)
1 => string '[email protected]' (length=16)
2 =>
array (size=1)
0 => string 'Jane Doe' (length=8)
3 =>
array (size=2)
0 => string 'Jane Doe' (length=8)
1 => string '[email protected]' (length=16)
顯然,這不是預期的輸出
我想更多的東西一樣:
array (size=xxxx)
0 =>
array (size=1)
0 => string 'John Doe' (length=8)
1 => string '[email protected]' (length=16)
1 =>
array (size=2)
0 => string 'Jane Doe' (length=8)
1 => string '[email protected]' (length=16)
我不確定爲什麼要添加額外的數組。
任何人有想法?
感謝
編輯
我的CSV看起來是這樣的;
NAME,EMAIL
John Doe,[email protected]
Jane Doe,[email protected]
你的if/else塊沒有括號,但兩行代碼。 – kinghfb
你的csv看起來像什麼? – veelen
@veelen我已經添加了CSV信息 –