Из комментария Qirel вы можете получить один объект со свойством для каждой строки в виде массива.Это не будет похоже на строки базы данных, извлекаемые с помощью API, и будет неудобным для доступа с целочисленными свойствами:
$result = (object)array_map('str_getcsv', file('file.csv'));
Чтобы получить формат массива объектов, таких как PDO fetchObject
, вам потребуетсяЭто необходимо, но все же каждый объект будет иметь целочисленные свойства (вероятно, не то, что вам нужно):
$result = array_map(function($v) { return (object)str_getcsv($v); }, file('file.csv'));
Чтобы сделать это, как обычно, с функциями базы данных, которые извлекают строку (но все же целочисленные свойства):
if($fh = fopen('file.csv', 'r')) {
while($row = fgetcsv($fh)) {
$result[] = (object)$row;
}
}
Лучше было бы выбрать первую строку, если у нее есть имена / заголовки столбцов, и объединить ее с данными перед приведением к объекту:
if($fh = fopen('file.csv', 'r')) {
$col = fgetcsv($fh);
while($row = fgetcsv($fh)) {
$result[] = (object)array_combine($col, $row);
}
}
с array_map
:
$rows = file('file.csv');
$cols = str_getcsv(array_shift($rows));
$result = array_map(function($v) use($cols) {
return (object)array_combine($cols, str_getcsv($v));
}, $rows);