JSON для одного столбца из файла CSV?


Я написал это, чтобы вытащить один столбец данных из csv-файла, разделите все результаты в 2, а затем отформатировать его как JSON, так что я могу делать с ней веб-приложения. Он работает, но он чувствует себя неустойчиво и странно. Есть ли лучший способ сделать это?

$fname = "subjects.csv";

$half = array();
$otherkeys = array();
$records = array();


if (($handle = fopen($fname, "r")) === FALSE) {
    exit;
}

/* First line is header with keys */
$keys = fgetcsv($handle);

echo '[';  //added the '['. here to get a propoerly formatted JSON response, not sure why I needed to but I did
while (($data = fgetcsv($handle)) !== FALSE) {
    $half[] = ''.$data[0]/2;    //added the ''. here to get a propoerly formatted JSON response, not sure why I needed to but I did
    $otherkeys[] = $keys[0];
    $records = array_combine($otherkeys, $half);
    $response = json_encode($records);
    echo $response; 
}
fclose($handle);
echo ']';  //added the ']'. here to get a properly formatted JSON response, not sure why I needed to but I did

Любые мысли очень ценятся.



1224
1
задан 11 декабря 2011 в 12:12 Источник Поделиться
Комментарии
2 ответа

Почему вам нужна '[' и ']' было поставить время по записи. Лучший способ сделать это является создание массива записей в PHP и затем кодирования. Вот что я бы сделал:

$fname = "subjects.csv";

if (($handle = fopen($fname, "r")) === FALSE) {
exit;
}

$records = array();

/* First line is header with keys */
$keys = fgetcsv($handle);

while (($data = fgetcsv($handle)) !== FALSE) {
$data[0] /= 2;
$records[] = array_combine($keys, $data);
}

fclose($handle);

echo json_encode($records);

2
ответ дан 11 декабря 2011 в 03:12 Источник Поделиться

попробуйте использовать json_encode вместо. Просто получить нужные данные в массив PHP, как вы уже делаете.

0
ответ дан 11 декабря 2011 в 12:12 Источник Поделиться