将 PHP 数组转换为 CSV

本教程是将 PHP 数组转换为 CSV 文件或格式。它有两个实现此转换的示例。

一个简单的示例是将 PHP 数组数据集解析为 CSV 并在浏览器上打印 CSV 数据。
另一个示例是将数据库数组转换为 CSV 并下载 .csv 文件。

示例 1:简单示例

下面的代码使用 PHP fputcsv()函数将数组转换为 CSV。该函数需要指定以下参数。

目标 CSV 文件。
迭代数组 pinter 以放置 CSV 行。
数据分隔符。
数据外壳。

<?php
$array = array(
array(100, 200, 300, 400, 500),
array('Lion', 'Tiger', 'Elephant', 'Horse', 'Dog "Domestic"'),
);
$csvDelimiter = ',';
$csvEnclosure = '"';

// to physically write to a file in disk
$csvFile = fopen('example.csv', 'w+');

// to write to temp
$csvFile = fopen('php://temp', 'r+');

foreach ($array as $line) {
fputcsv($csvFile, $line, $csvDelimiter, $csvEnclosure);
}
rewind($csvFile);

// to display CSV file contents on browser
$contents = '';
while (!feof($csvFile)) {
$contents .= fread($csvFile, 8192);
}
fclose($csvFile);
echo $contents;
?>

此快速示例创建一个用于转换为 CSV 的输入数组。这是一个包含数据集的多维数组。

此代码在转换输入数组之前设置分隔符和封装。

它迭代数组并在每次迭代时调用fputcsv()以形成数据行。

如果您想将 CSV 转换为 PHP 数组,请从链接的文章中获取代码。

示例2:将数据库结果数组转换为CSV以供下载

该 PHP 代码用于学习如何将数据库中的数据数组转换为 CSV。之前,我们已经了解了如何在 PHP 中处理 CSV,以对数据库进行读取、写入、导入和导出操作。

在此示例中,代码连接数据库并将结果读取到数组中。然后,它创建一个 PHP 文件输出流来逐行放置 CSV 数据。

首先,代码设置列标题数组。然后,它迭代数据库结果数组并对每行数据调用fputcsv() 。

PHP header() 通过application/csv设置,用于将 CSV 文件下载到浏览器。

<?php
// PHP code will connect to a database
// Read from a table and get result
// Formulate the result as an array to use in a convenient form
// Iterate the array
// Use PHP's function fputcsv and write the array elements
// to a CSV file
// Then push that CSV file as download
$mysqli = new mysqli("localhost", "root", "", "db_phppot_examples");
$i = 0;
$query = "SELECT id, name, type FROM tbl_php_array_to_csv";
if ($resultArray = $mysqli->query($query)) {
while ($record = $resultArray->fetch_array()) {
$animalArray[$i]['id'] = $record['id'];
$animalArray[$i]['name'] = $record['name'];
$animalArray[$i]['type'] = $record['type'];
$i++;
}
}
$fileOut = fopen("php://output", 'w') or die("Unable open php://output");

// Header forces the CSV file to download
header("Content-Type:application/csv");
header("Content-Disposition:attachment;filename=example-csv.csv");
// writing the first CSV record as the column labels
// Refer: https://www.php.net/manual/en/function.fputcsv.php
fputcsv($fileOut, array('id', 'name', 'type'));

// writing array elements as CSV file records one by one
foreach ($animalArray as $animal) {
fputcsv($fileOut, $animal);
}
fclose($fileOut) or die("Unable to close php://output");
?>

数据库脚本

该数据库脚本导入表结构和数据来运行该示例。

您也可以使用不同的数据库表尝试此代码。只需要更改少量代码即可编辑新表的列名称。

--
-- Database: `db_phppot_examples`
--

-- --------------------------------------------------------

--
-- Table structure for table `tbl_php_array_to_csv`
--

CREATE TABLE `tbl_php_array_to_csv` (
`id` int NOT NULL,
`name` varchar(255) NOT NULL,
`type` varchar(255) NOT NULL
);

--
-- Dumping data for table `tbl_php_array_to_csv`
--

INSERT INTO `tbl_php_array_to_csv` (`id`, `name`, `type`) VALUES
(1, 'Lion', 'Wild'),
(3, 'Dog', 'Domestic'),
(4, 'Tiger', 'Wild');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `tbl_php_array_to_csv`
--
ALTER TABLE `tbl_php_array_to_csv`
ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `tbl_php_array_to_csv`
--
ALTER TABLE `tbl_php_array_to_csv`
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

PHP 数组到 CSV 转换的用途

(1)数据库表导出
我们可以使用此代码将数据库导出到 CSV 文件。它用于备份数据库表。

如果您想创建一个 PHP 程序来将完整的数据库备份到 Excel 中,链接的文章中有代码。

(2) 将数据格式化为逗号分隔值
它有助于转换各种数据源并以统一的 CSV 格式创建哑元。

如果将更多数据从数组加载到现有 CSV 中,此代码将会很有帮助。

THE END
分享
二维码
海报
将 PHP 数组转换为 CSV
本教程是将 PHP 数组转换为 CSV 文件或格式。它有两个实现此转换的示例。
<<上一篇
下一篇>>