@MRcracker

Как вывести определенную колонку csv?

Есть файл csv, который содержит в себе набор данных.
Например,
number; price; product
1;222; apple
2;333;orange;
3;444;banana

Как вывести на экран только название колонки product отображались apple, orange, banana
  • Вопрос задан
  • 397 просмотров
Пригласить эксперта
Ответы на вопрос 3
MKE
@MKE
PHP, JS, MySQL, HTML, CSS
Попробуйте )

// чтение CSV в удобный массив
function csv2array($file, $charset_in = 'windows-1251', $charset_out = 'utf-8')
{
    $handle = fopen($file, 'r');
    if ($handle === false) {
        echo 'Не удалось открыть файл '.$file;
        exit();
    }
    $data = $fields = array();
    $i = 0;
    if ($handle) {
        while (($row = fgetcsv($handle, 0, ';')) !== false) {
            if (empty($fields)) {
                foreach ($row as $k => $r) {
                    $row[$k] = iconv($charset_in, $charset_out.'//IGNORE', $r);
                }
                $fields = $row;
                continue;
            }
            foreach ($row as $k => $value) {
                if (!empty($fields[$k])) {
                    $value = iconv($charset_in, $charset_out.'//IGNORE', $value);
                    $data[$i][$fields[$k]] = $value;
                }
            }
            $i++;
        }
        if (!feof($handle)) {
            echo "Error: unexpected fgets() fail\n";
        }
        fclose($handle);
    }
    unset($fields);
    return $data;
}
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Сначала прочитать первую колонку.
сделать полученному массиву array_flip()
дальше при чтении остальных строк использовать этот массив для получения нужных колонок по их имени, например $data[$header['product']]

если же выводить не по имени, а по номеру, то всё ещё проще - посчитать колонки и подставить нужный индекс вручную
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы