0

我有一个类似于下面的 csv

"0","Task 1","456461608"
"0","Task 2","483727014"
"1","Task 3","277047414"

我有以下 php 代码($prep 只是将数组中的数据写入数据库)

$csv_array = file($file_name);
foreach ($csv_array as $row_num => $row) {
    $row = trim ($row);
    $column = explode ( ',' , $row );
    $param1 = $column[2];
    $param2 = $column[1];
    $param3 = $column[0];

    // insert the row
    $result = execute ( $prep );
}

我需要删除第一列 ($param3) 和最后一列 ($param1) 周围的引号。这样做的最佳方法是什么?

4

2 回答 2

2

PHP 具有csv 特定功能。您应该使用它们,因为它们可以解决您面临的问题,即,如果列值包含引号怎么办。还:

$column = explode ( ',' , $row );

如果其中一列的值包含逗号怎么办?

csv 函数将确保正确解析数据。

于 2013-04-15T22:13:14.347 回答
1

有时数组太笨了,无法完成工作。有些对象更聪明:

$rows = new SplFileObject($path);
$rows->setFlags(SplFileObject::READ_CSV);

foreach($rows as $row)
{
    var_dump($row);
}

输出:

array(3) {
  [0]=> string(1) "0"
  [1]=> string(6) "Task 1"
  [2]=> string(9) "456461608"
}
array(3) {
  [0]=> string(1) "0"
  [1]=> string(6) "Task 2"
  [2]=> string(9) "483727014"
}
array(3) {
  [0]=> string(1) "1"
  [1]=> string(6) "Task 3"
  [2]=> string(9) "277047414"
}

在行动中看到它。

于 2013-04-15T22:41:28.200 回答