PHP перебрать каждую строку csv и вернуть строку с соответствующим элементом - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть CSV-файл с именем data.csv.

Вот пример того, что находится в data.csv

Microsoft,2020-02-13,"Sample",tt,aa,qq,w,ee,rr,tt,", ",", ",", ","2020-02-13 16:03:08"
Google,2020-02-13,"HQ",tt,aa,qq,w,ee,rr,tt,", ",", ",", ","2020-02-13 16:10:48"

Я пытаюсь перебрать каждую строку csv и проверить, введена ли пользовательская переменная (скажем, var = "Microsoft" ) соответствует первому значению в любой строке. Если он совпадает, то вернуть все элементы в этой строке в виде массива. (пробовал это с помощью fgetcsv, но возвращает весь CSV-файл)

Вот что я пробовал до сих пор:

foreach ($csv as $line) {
    if ($line[0] == 'Microsoft') {
        $file = fopen("data.csv","r");
        echo(fgetcsv($file));
        fclose($file);
    }
}

Ответы [ 2 ]

2 голосов
/ 13 февраля 2020
$csv = array_map('str_getcsv', file('./temp.csv'));

foreach ($csv as $line) {
    if ($line[0] == 'Microsoft') {
        echo implode(', ',$line);
    }
}
0 голосов
/ 13 февраля 2020

Если значение первого столбца подходит в качестве индекса массива. Вы можете использовать array_column для переиндексации по первому столбцу:

<?php
$result = array_column(array_map('str_getcsv', file('data.csv')), null, 0)['Microsoft'] ?? null;
...