Как сохранить один столбец из многомерного массива в виде файла.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);