From f5ff7332a42a36474e775a97f18afe1ff2c47523 Mon Sep 17 00:00:00 2001 From: Fonata Date: Sat, 17 Mar 2018 12:14:04 +0100 Subject: [PATCH] Set $data field on unparse. This fixes issue #132. --- src/Csv.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Csv.php b/src/Csv.php index a8557af..5c691e7 100644 --- a/src/Csv.php +++ b/src/Csv.php @@ -783,6 +783,9 @@ class Csv { public function unparse($data = array(), $fields = array(), $append = FileProcessingModeEnum::MODE_FILE_OVERWRITE, $is_php = false, $delimiter = null) { if (!is_array($data) || empty($data)) { $data = &$this->data; + } else { + /** @noinspection ReferenceMismatchInspection */ + $this->data = $data; } if (!is_array($fields) || empty($fields)) { @@ -833,8 +836,6 @@ class Csv { } private function _validate_fields_for_unparse($fields) { - // this is needed because sometime titles property is overwritten instead of using fields parameter! - $titlesOnParse = !empty($this->data) ? array_keys($this->data[0]) : array(); if (empty($fields)) { $fields = $this->titles; } @@ -843,6 +844,9 @@ class Csv { return array(); } + // this is needed because sometime titles property is overwritten instead of using fields parameter! + $titlesOnParse = !empty($this->data) ? array_keys($this->data[0]) : array(); + // both are identical, also in ordering if (array_values($fields) === array_values($titlesOnParse)) { return array_combine($fields, $fields);