У меня есть файл 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)
Я не уверен, почему он добавляет дополнительные массивы.
У кого-нибудь есть идея?
Благодаря
EDIT
Мой CSV выглядит следующим образом;
NAME,EMAIL
John Doe,[email protected]
Jane Doe,[email protected]
Ваш, если/иначе блок не имеет фигурные скобки, но две строки кода. – kinghfb
Как выглядит ваш csv? – veelen
@veelen Я добавил CSV-информацию –