-1

以下代码将整个数组导出到 .csv 文件中,但我只想导出特定列。

<?php 
$test = array(array("eric", 7),array("nancy" ,8),array("dave", 10));
$fp = fopen('new.csv', 'w');
foreach ($test as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>
4

4 回答 4

1

您可以通过在调用 fputcsv() 之前从 $fields 数组中删除要排除的字段来做到这一点。使用传递元素键的 unset() 函数删除字段。

例子

假设您只想拥有一个名称列表,您将执行以下操作

$test = array(array("eric", 7),array("nancy" ,8),array("dave", 10));
$fp = fopen('new.csv', 'w');
foreach($test as $row){
    unset($row[1]);
    // Removing the index 1 leaves the array with just one field which will be written to the new.csv file.
    fputcsv($fp,$row);
}
fclose($fp)
于 2018-09-18T03:17:29.433 回答
0

在您的循环中,无需修改数组行的副本(使用unset()array_shift()等),只需提供您希望用作单元素数组的列值。

fputcsv()的第二个参数必须是一个数组。这就是为什么$row[0]值用方括号括起来的原因。

如果要将名称值保存到文件中,请使用$row[0].

如果要将数值保存到文件中,请使用$row[1].

代码:

$test = ["eric", 7], ["nancy", 8], ["dave", 10]];
$fp = fopen("new.csv", 'w');
foreach ($test as $row) {
    fputcsv($fp, [$row[0]]);  // if you want first column values
}
fclose($fp);
于 2018-09-23T11:35:47.227 回答
0

在将数组放入 csv 之前对其进行处理。例如,如果您不想要第一个列,请将其删除。您可以使用函数 array_shift。
这不会影响原始数组。喜欢这些代码。

<?php 
$test = array(array("eric", 7),array("nancy" ,8),array("dave", 10));
$fp = fopen('new.csv', 'w');
foreach ($test as $fields) {
    array_shift($fields);
    fputcsv($fp, $fields);
}

fclose($fp);
?>

只需将您想要的列保留在 csv 中。

于 2018-09-18T03:04:15.393 回答
-1

例如,如果您只想导出名称,请执行以下操作:

$test = array(array("eric", 7),array("nancy" ,8),array("dave", 10));
$fp = fopen('new.csv', 'w');
foreach ($test as $fields) {
fputcsv($fp, $fields[0]);
}
fclose($fp);
于 2018-09-18T02:29:19.633 回答