Как сохранить один столбец из многомерного массива в виде файла.csv?

Следующий код экспортирует весь массив в файл.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 ответа

Вы можете сделать это, удалив поля, которые вы хотите исключить из массива $fields перед вызовом fputcsv(). Удалите поля с помощью функции 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)

В вашем цикле нет необходимости изменять копию строки массива (с помощью 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);

Сделать с массивом, прежде чем положить его в 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.

Например, если вы хотите экспортировать только имена, сделайте следующее:

$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);
Другие вопросы по тегам