В моем 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
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)
;
$result = $line[1]; var_dump($result);
выводит это: string 'Associate Degree of Business Studies' (length=36)
while()
чтобы он не вызывалfgetcsv()
каждом ее изменении. Это может стать очень ресурсоемким.