Чтение данных из CSV в единый массив или отдельный json

#php

#php

Вопрос:

Я использую функцию автозаполнения jQuery. Для работы мне нужен json в этом формате [«Аляска», «Алабама», «Арканзас»] . В настоящее время я считываю данные из файла CSV. Это мой код.

 $f = fopen($filename, "r");
    while ($row = fgetcsv($f)) {
            $out = $row[2];
            print_r (explode(" , ",$out));
        }
  

Теперь я получаю вывод в виде

 Array
(
    [0] => Alaska
)
Array
(
    [0] => Alabama
)
Array
(
    [0] => Arkansas
)
  

И мой Json как

 ["Alaska"]["Romeo"]["Arkansas"]
  

Как мне преобразовать массив в простой массив, например

 Array
(
    [0] => Alaska
    [1] => Alabama
    [2] => Arkansas
)
  

Если не в json, подобный этому

 ["Alaska","Alabama","Arkansas"]
  

Комментарии:

1. php.net/manual/en/function.str-getcsv.php#114764

2. Ваши результаты, похоже, предполагают, что explode() вызов не делает ничего полезного и может быть удален.

Ответ №1:

Вы создаете массив значений, а затем помещаете их в json_encode() функцию.

 $data = [];
$f = fopen($filename, "r");
    while ($row = fgetcsv($f)) {
            $out = $row[2];
            $data = array_merge($data, explode(" , ",$out)));
        }

echo json_encode($data);
  

Ответ №2:

Возможно, было бы проще прочитать файл в arary, сопоставить с функцией, которая запускается, затем закодировать и отобразить:

 echo json_encode(
    array_map(function($v) { return explode(" , ", $v)[2]; }, file($filename))
);