如何将多行CSV解析为多维关联数组?

时间:2014-11-12 13:18:29

标签: php arrays csv

$csv_content的内容是:

1415797658,456ABC,789,123,"bla"
1415797656,654XYZ,897,567,"foo"
1415797654,639HJW,465,146,"bar"

str_getcsv(file_get_contents($csv_content))导致:

array
  0 => string '1415797658' (length=10)
  1 => string '456ABC' (length=6)
  2 => string '789' (length=3)
  3 => string '123' (length=3)
  4 => string 'bla' (length=3)
  5 => string '1415797656' (length=10)
  6 => string '654XYZ' (length=6)
  7 => string '897' (length=3)
  8 => string '567' (length=3)
  9 => string 'foo' (length=3)
  10 => string '1415797654' (length=10)
  11 => string '639HJW' (length=6)
  12 => string '465' (length=3)
  13 => string '146' (length=3)
  14 => string 'bar' (length=3)

期望的结果:

array
  0 =>
    array
      'timestamp' => string '1415797658' (length=10)
      'id' => string '456ABC' (length=6)
      'id2' => string '789' (length=3)
      'id3' => string '123' (length=3)
      'text' => string 'bla' (length=3)
  1 =>
    array
      'timestamp' => string '1415797656' (length=10)
      'id' => string '654XYZ' (length=6)
      'id2' => string '897' (length=3)
      'id3' => string '567' (length=3)
      'text' => string 'foo' (length=3)
  2 =>
    array
      'timestamp' => string '1415797654' (length=10)
      'id' => string '639HJW' (length=6)
      'id2' => string '465' (length=3)
      'id2' => string '146' (length=3)
      'text' => string 'bar' (length=3)

最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

$array=array();
$handle=fopen($csv_content,'r');
while ($row=fgetcsv($handle)){
   $array[]=array(
              'timestamp' => $row[0],
              'id' => $row[1],
              'id2' => $row[2],
              'id3' => $row[3],
              'text' => $row[4]
           );
}