У меня есть файл CSV выглядит следующим образом:PHP получить категорию и идентификатор из CSV
CategoryA;ID0001;title1
CategoryA;ID0002;title2
CategoryB;ID0001;title3
CategoryB;ID0002;title4
CategoryC;ID0001;title5
[More categories, IDs and titles...]
Чтобы отсортировать эти записи по категориям и идентификаторы в пределах категории я бы нужно, по крайней мере 2 PHP массивов в друг друга. Первый с категориями и ключом, похожим на «cat», а второй с идентификаторами, имеющими ключ типа «id».
Моя ужасная попытка на этом:
function read_csv($filename){
$rows = array();
foreach (file($filename, FILE_IGNORE_NEW_LINES) as $line){
$rows[] = str_getcsv($line, ';');
};
return $rows;
};
print_r(read_csv("file.csv"));
Похоже:
Array
(
[0] => Array
(
[0] => A
[1] => 0001
[2] => titel1
)
[1] => Array
(
[0] => A
[1] => 0002
[2] => titel2
)
[2] => Array
(
[0] => B
[1] => 0001
[2] => titel3
)
[3] => Array
(
[0] => B
[1] => 0002
[2] => titel4
)
[4] => Array
(
[0] => C
[1] => 0001
[2] => titel5
)
)
Или есть способ переименовать ключи? Все, что я пробовал, пошло не так. Как мне продолжить?
можно загрузить в db, даже временную таблицу –
В GitHub есть несколько парсеров csv, и я уверен, что php имеет собственный встроенный класс для синтаксического анализа csv. Попробуй это? В противном случае '$ rows []' следует изменить, чтобы включить заголовок столбца (Ie '$ rows [$ column]'), но вы извлекли имя столбца – ScottMcGready
@Dagon, если это просто быстрый скрипт для выполнения определенной цели, это не стоит накладных расходов на создание sql db, но в долгосрочной перспективе, возможно, – ScottMcGready