首页 >后端开发 >php教程 >如何在 PHP 中将数组转换为 CSV 文件?

如何在 PHP 中将数组转换为 CSV 文件?

Barbara Streisand
Barbara Streisand原创
2024-11-08 00:52:03605浏览

How can I convert an array into a CSV file in PHP?

将数组转换为 CSV:综合指南

CSV(逗号分隔值)是一种广泛使用的用于存储表格数据的格式。将数组转换为 CSV 文件可以轻松进行数据传输和分析。本文提供了如何完成此转换的分步指南。

数组

考虑以下 stdClass 对象数组:

stdClass Object
(

    [OrderList_RetrieveByContactResult] => stdClass Object
        (
            [OrderDetails] => stdClass Object
                (
                    [entityId] => 1025298
                    [orderId] => 10952
                    [... various properties ...]
                )

        )

)

转换函数

要将数组转换为 CSV,我们可以使用封装逻辑的辅助函数。下面是一个示例函数:

/**
 * Formats a line (passed as a fields  array) as CSV and returns the CSV as a string.
 * Adapted from http://us3.php.net/manual/en/function.fputcsv.php#87120
 */
function arrayToCsv( array &$fields, $delimiter = ';', $enclosure = '"', $encloseAll = false, $nullToMysqlNull = false ) {
    $delimiter_esc = preg_quote($delimiter, '/');
    $enclosure_esc = preg_quote($enclosure, '/');

    $output = array();
    foreach ( $fields as $field ) {
        if ($field === null && $nullToMysqlNull) {
            $output[] = 'NULL';
            continue;
        }

        // Enclose fields containing $delimiter, $enclosure or whitespace
        if ( $encloseAll || preg_match( "/(?:${delimiter_esc}|${enclosure_esc}|\s)/", $field ) ) {
            $output[] = $enclosure . str_replace($enclosure, $enclosure . $enclosure, $field) . $enclosure;
        }
        else {
            $output[] = $field;
        }
    }

    return implode( $delimiter, $output );
}

此函数采用数组、分隔符和包围字符作为输入。它处理数组中的每个字段,包含包含特殊字符的字段。最后,它将字段格式化为 CSV 字符串并返回。

应用转换

要转换我们的示例数组,我们可以调用 arrayToCsv 函数:

$fields = [$array->OrderList_RetrieveByContactResult->OrderDetails];
$csv = arrayToCsv($fields);

$csv 变量现在包含转换后的 CSV 数据。您可以将其保存到文件或用于进一步处理。

以上是如何在 PHP 中将数组转换为 CSV 文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn