Как прочитать файл CSV в переполнение стека 2d массив

Я пытаюсь прочитать CSV-файл в массив. Вот что у меня есть для чтения CSV в массив:

$i = 0;
while ($i < $fileLines) {
$userDB=Array(
($i) => Array
(
(title) => $harry[$i][0],
(subtitle) => $harry[$i][1],
(series) => $harry[$i][2],
(author) => $harry[$i][3],
(author2) => $harry[$i][4],
(author3) => $harry[$i][5],
(category) => $harry[$i][6],
(subjects) => $harry[$i][7],
(callnumber) => $harry[$i][8],
(isbn) => $harry[$i][9],
(publisher) => $harry[$i][10],
(keywords) => $harry[$i][11],
(option1) => $harry[$i][12],
(option2) => $harry[$i][13],
(option3) => $harry[$i][14],
(option4) => $harry[$i][15],
(option5) => $harry[$i][16],
(option6) => $harry[$i][17]
) // end child array
); // end parent array
$i++;
} // end while

Вот пример CVS, который я использую:

"Algebra and Trigonometry with Analytic Geometry, Classic Edition",,,"Swokowski, Earl","Cole, Jeffery A.",,Cengage Learning,,,495559717,,,,," ALGEBRA AND TRIGONOMETRY WITH ANALYTIC GEOMETRY, CLASSIC EDITION 12 SWOKOWSKI, EARL COLE, JEFFERY A. CENGAGE LEARNING 2009-01-28 912 500 0495559717 "All My Friends Are Dead,,,"Monsen, Avery","John, Jory",,Chronicle Books,,,811874559,,,,," ALL MY FRIENDS ARE DEAD MONSEN, AVERY JOHN, JORY CHRONICLE BOOKS 2010-06-30 96 500 0811874559 "All My Friends Are Still Dead,,,"John, Jory","Monsen, Avery",,Chronicle Books,,,1452106967,,,,," ALL MY FRIENDS ARE STILL DEAD 3.2.2012 JOHN, JORY MONSEN, AVERY CHRONICLE BOOKS 2012-03-07 108 500 1452106967 "

Моя проблема возникает, когда я пытаюсь перебрать запись в массив. Если я закомментирую цикл while, я правильно прочту первый элемент в CSV. Однако, когда я пытаюсь использовать цикл while, я не получаю никаких данных, записанных в массив. Что я пропускаю / делаю совершенно неправильно?

Я не включил весь свой код, потому что я не хочу утопить всех, но я могу включить больше, если это поможет.

0

Решение

Вы должны объявить свой $userDB перед циклом while:

$i = 0;
$userDB = array();
while ($i < $fileLines) {
$userDB[] => Array
(
(title) => $harry[$i][0],
(subtitle) => $harry[$i][1],
(series) => $harry[$i][2],
(author) => $harry[$i][3],
(author2) => $harry[$i][4],
(author3) => $harry[$i][5],
(category) => $harry[$i][6],
(subjects) => $harry[$i][7],
(callnumber) => $harry[$i][8],
(isbn) => $harry[$i][9],
(publisher) => $harry[$i][10],
(keywords) => $harry[$i][11],
(option1) => $harry[$i][12],
(option2) => $harry[$i][13],
(option3) => $harry[$i][14],
(option4) => $harry[$i][15],
(option5) => $harry[$i][16],
(option6) => $harry[$i][17]
) // end child array
); // end parent array
$i++;
} // end while

Кстати, почему бы вам не использовать fgetcsv или же str_getcsv функция php?

$userDB = str_getcsv($fileLines);
1

Другие решения

Я использовал этот метод:

        $formattedArr = array(); // create array
$filename = "sample.csv"; // point to CSV file

if (($handle = fopen($filename, "r")) !== FALSE) {
$key = 0; // set array key.
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$count = count($data);  //get total keys in row
for ($i=0; $i < $count; $i++) { //insert data to our array
$formattedArr[$key][$i] = $data[$i];
} // end for
$key++;
} // end while
fclose($handle); //close file handle
} // end if

Он проходит через CSV и добавляет каждый элемент в определенное место (например, $ formattedArr [0] [0] = «Алгебра и тригонометрия с аналитической геометрией, Classic Edition». Спасибо всем за ваши комментарии, предложения и ответы.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector