diff --git a/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php b/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php index 55f78b1d0e013..a2d4df909dce8 100644 --- a/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php +++ b/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php @@ -181,18 +181,24 @@ public function decode(string $data, string $format, array $context = []) $depth = $headerCount[$i]; $arr = &$item; for ($j = 0; $j < $depth; ++$j) { + $headerName = $headers[$i][$j]; + + if ('' === $headerName) { + $headerName = $i; + } + // Handle nested arrays if ($j === ($depth - 1)) { - $arr[$headers[$i][$j]] = $cols[$i]; + $arr[$headerName] = $cols[$i]; continue; } - if (!isset($arr[$headers[$i][$j]])) { - $arr[$headers[$i][$j]] = []; + if (!isset($arr[$headerName])) { + $arr[$headerName] = []; } - $arr = &$arr[$headers[$i][$j]]; + $arr = &$arr[$headerName]; } } diff --git a/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php b/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php index 06cf6a0617d86..3d2163c06e923 100644 --- a/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php +++ b/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php @@ -218,7 +218,13 @@ public function testDecodeEmptyData() { $data = $this->encoder->decode("\n\n", 'csv'); - $this->assertSame([['' => null]], $data); + $this->assertSame([[0 => null]], $data); + } + + public function testMultipleEmptyHeaderNamesWithSeparator() + { + $this->encoder->decode(',. +,', 'csv'); } public function testEncodeVariableStructure()
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: