Преобразование CSV в ассоциативный массив в PHP: методы и примеры кода

В PHP работа с файлами CSV (значения, разделенные запятыми) является распространенной задачей при импорте/экспорте данных или манипулировании ими. Одним из распространенных требований является преобразование данных CSV в структуру ассоциативного массива, где каждая строка файла CSV становится элементом массива с парами ключ-значение. В этой статье блога мы рассмотрим различные методы достижения такого преобразования на примерах кода.

Метод 1: использование fgetcsv() и fopen()

$filename = 'data.csv';
$file = fopen($filename, 'r');
$data = [];
$header = fgetcsv($file); // Read the CSV header
while ($row = fgetcsv($file)) {
    $data[] = array_combine($header, $row);
}
fclose($file);
print_r($data);

Метод 2: использование str_getcsv() и file()

$filename = 'data.csv';
$content = file_get_contents($filename);
$rows = explode(PHP_EOL, $content);
$header = str_getcsv(array_shift($rows));
$data = [];
foreach ($rows as $row) {
    $data[] = array_combine($header, str_getcsv($row));
}
print_r($data);

Метод 3. Использование встроенных CSV-функций PHP

$filename = 'data.csv';
$data = [];
$header = null;
if (($handle = fopen($filename, 'r')) !== false) {
    while (($row = fgetcsv($handle)) !== false) {
        if (!$header) {
            $header = $row;
        } else {
            $data[] = array_combine($header, $row);
        }
    }

    fclose($handle);
}
print_r($data);

Метод 4: использование сторонних библиотек (например, League/CSV)
Чтобы использовать сторонние библиотеки, вам необходимо установить их с помощью Composer. Вот пример использования библиотеки League/CSV:

require_once 'vendor/autoload.php';
use League\Csv\Reader;
$filename = 'data.csv';
$csv = Reader::createFromPath($filename, 'r');
$csv->setHeaderOffset(0);
$data = $csv->getRecords();
print_r($data);

В этой статье мы рассмотрели несколько методов преобразования данных CSV в ассоциативный массив в PHP. Мы рассмотрели использование встроенных функций PHP, таких как fgetcsv() и str_getcsv(), а также возможность использования сторонних библиотек, таких как League/CSV. В зависимости от ваших конкретных требований и сложности вашего CSV-файла вы можете выбрать метод, который лучше всего соответствует вашим потребностям. Используя эти методы, вы можете эффективно работать с данными CSV в PHP и выполнять дальнейшие манипуляции с данными или анализировать их.

Не забудьте оптимизировать SEO своего сайта, предоставив описательный заголовок и соответствующие теги. Это поможет поисковым системам и пользователям более эффективно находить ваш контент.