Как l oop разных csv и объединить их? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть серия csv, которую мне нужно получить с URL-адреса, они имеют разные названия, но одинаковое расширение .csv и тот же точный формат.

Затем преобразуйте его в json.

Вот что я использую для одного, но как l oop для любого. csv?

Тоже раз скачал как их слить? Итак, допустим, у нас разные даты, мы должны ожидать слияния, например:

 {
    "date": 2/4/20,
    "state": "AK",...
},
 {
    "date": 3/4/20,
    "state": "AK"...

Это php, который я использую для одного csv

header('Content-Type: application/json');

if (($handle = fopen("example.com/NAME.csv", "r")) !== FALSE) {
    $csvs = [];
    while(! feof($handle)) {
        $csvs[] = fgetcsv($handle);
    }
    $datas = [];
    $column_names = [];
    foreach ($csvs[0] as $single_csv) {
        $column_names[] = $single_csv;
    }
    foreach ($csvs as $key => $csv) {
        if ($key === 0) {
            continue;
        }
        foreach ($column_names as $column_key => $column_name) {
            $datas[$key-1][$column_name] = $csv[$column_key];
        }
    }
    $json = json_encode($datas, JSON_PRETTY_PRINT);
    fclose($handle);
    print_r($json);
}

Что, если у нас есть

example.com/NAME.csv

example.com/NAME2.csv

example.com/NAME3.csv

ОБНОВЛЕНИЕ

Это серия csv и его данных

1 Ответ

0 голосов
/ 06 мая 2020

Поскольку нет способа (насколько я знаю) просто удалить сайт и найти все файлы с одинаковым расширением (согласно комментариям, и поскольку я не мог найти, как использовать php), я закончил тем, что создал массив имен (в моем случае - даты), а затем l oop it, тогда вывод будет объединенным json:

$arr = array("04-12-2020",
    "04-13-2020",
    "04-14-2020",
    "04-15-2020",
    "04-16-2020",
    "04-17-2020",
    "04-18-2020",
    "04-19-2020",
    "04-20-2020",
    "04-21-2020",
    "04-22-2020",
    "04-23-2020",
    "04-24-2020",
    "04-25-2020",
    "04-26-2020",
    "04-27-2020",
    "04-28-2020",
    "04-29-2020",
    "04-30-2020",
    "05-01-2020",
    "05-02-2020",
    "05-03-2020",
    "05-04-2020",
    "05-05-2020"
);

foreach($arr as $date) {
    $url = $url.$date.".csv";..
    // here the rest of the code as per the question

Не уверен, что это лучший способ, но работает.

Результат - мега json со всеми датами и объединенными данными в виде единого объекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...