首頁 >後端開發 >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