json_encode使用数组源无法正常工作

时间:2015-02-19 03:45:18

标签: php json

在我的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_encode

将数组转换为json
$json_res = json_encode($course);

编辑:所以,为了清楚,我有这样的数组

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

1 个答案:

答案 0 :(得分:0)

在考虑到您提供的所有信息后,您的原始代码应该有效。试试这个,让我知道它是否有效。

$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)