如何将多维数组中的单个列另存为.csv文件?

时间:2018-09-18 01:51:44

标签: php multidimensional-array export-to-csv fputcsv array-column

以下代码将整个数组导出到.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 个答案:

答案 0 :(得分: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的列。

答案 1 :(得分:0)

您可以通过在调用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)

答案 2 :(得分: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);

答案 3 :(得分:-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);