json_encode не работает должным образом с использованием источника массива

0

В моем php я читаю файл и успешно получаю каждую строку в массив ($line[1] потому что это 3 столбца CSV, и мне просто нужно второе значение):

while (($line = fgetcsv($file, 1000)) !== false)
    {           
        $course[] = array('course' => $line[1]);            
    }

$course[] правильно содержит массив вроде:

0 => 
array (size=1)
  'course' => string 'Course One' (length=68)
1 => 
array (size=1)
  'course' => string 'Course Two' (length=45)

Проблема в том, что я не могу заставить массив преобразовать в json, используя json_encode

$json_res = json_encode($course);

EDIT: Чтобы просто быть ясным, у меня есть массив вроде этого

2 => 
array (size=1)
  'course' => string 'Associate Degree of Business Studies' (length=36)
3 => 
array (size=1)
  'course' => string 'Associate Degree of Business Administration' (length=43)

$json_encode, дает мне

boolean false
  • 0
    Примечание. Вам следует изменить цикл while() чтобы он не вызывал fgetcsv() каждом ее изменении. Это может стать очень ресурсоемким.
  • 0
    Господи, уже проголосовал, интересно, что я, возможно, сделал не так
Показать ещё 3 комментария
Теги:

1 ответ

0
Лучший ответ

ok после принятия во внимание всю предоставленную вами информацию, ваш исходный код должен работать. Попробуйте это и сообщите мне, если это сработает.

$file = new SplFileObject("file.csv");
$file->setFlags(SplFileObject::READ_CSV);
$course = array();
foreach ($file as $row) {
    $line = array('course' => $row[1]);
    array_push($course, $line);
}
$json_res = json_encode($course);
var_dump($json_res);

Обновление: попробуйте этот код и сообщите мне, если он работает:

$file = fopen('file.csv', 'r');
$course = array();
while (($data = fgetcsv($file, 1000, ",")) !== FALSE) {
    $line = array('course' => utf8_decode($data[1]));
    array_push($course, $line);
}
$json_res = json_encode($course);
var_dump($json_res)

;

  • 0
    json_encode все еще не работает, это должно быть связано с тем, как возвращаются строки CSV - почему одна строка должна возвращаться так: строка «Associate Degree of Business Studies» (length = 36) Т.е., почему «строка» Интересно, с самого начала
  • 0
    то есть это: $result = $line[1]; var_dump($result); выводит это: string 'Associate Degree of Business Studies' (length=36)
Показать ещё 13 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню