setMultiSchema(true); $rows = iterator_to_array($reader); self::assertSame([ ["nom" => "clain", "prenom" => "jephté", "age" => "45"], ["nom" => "enpion", "prenom" => "tarte", "age" => "36"], ["nom" => "x", "prenom" => "y", "age" => false], ["nom" => "z", "prenom" => false, "age" => false], ["a" => "first", "b" => "second"], ], $rows); } function testReader2() { $rwf = fopen("php://memory", "w+b"); fwrite($rwf, << "clain", "comment" => "ceci est un commentaire", "num" => "45"], ], $rows); } function testReader3() { $rwf = fopen("php://memory", "w+b"); fwrite($rwf, ""); rewind($rwf); $reader = new CsvReader($rwf); $rows = iterator_to_array($reader); self::assertSame([], $rows); } function testReader4() { $rwf = fopen("php://memory", "w+b"); fwrite($rwf, "nom,prenom,age"); rewind($rwf); $reader = new CsvReader($rwf); $rows = iterator_to_array($reader); self::assertSame([], $rows); } function testReader5() { $reader = new CsvReader(__DIR__ . "/utf8.csv"); $rows = iterator_to_array($reader); self::assertSame([ ["nom" => "clain", "prénom" => "jephté", "age" => "45"], ], $rows); $reader = new CsvReader(__DIR__ . "/cp1252.csv"); $reader->setEncodingFilter("cp1252"); $rows = iterator_to_array($reader); self::assertSame([ ["nom" => "clain", "prénom" => "jephté", "age" => "45"], ], $rows); } function testMappings() { $rwf = fopen("php://memory", "w+b"); fwrite($rwf, << "=prenom,annees=age,nom", ]); $rows = iterator_to_array($reader); self::assertSame([ ["annees" => "45", "nom" => "clain"], ["annees" => "36", "nom" => "enpion"], ], $rows); # tester excludes + remap # ordre de la source rewind($rwf); $reader = new CsvReader($rwf, [ "header_mappings" => "=prenom,annees=age", ]); $rows = iterator_to_array($reader); self::assertSame([ ["nom" => "clain", "annees" => "45", "ville" => "sainte-clotilde"], ["nom" => "enpion", "annees" => "36", "ville" => "missile fixe"], ], $rows); ########################################################################### ## mappings au format tableau # tester includes + excludes + remap # ordre du mapping rewind($rwf); $reader = new CsvReader($rwf, [ "header_mappings" => ["prenom" => null, "annees" => "age", "nom"], ]); $rows = iterator_to_array($reader); self::assertSame([ ["annees" => "45", "nom" => "clain"], ["annees" => "36", "nom" => "enpion"], ], $rows); # tester excludes + remap # ordre de la source rewind($rwf); $reader = new CsvReader($rwf, [ "header_mappings" => ["prenom" => null, "annees" => "age"], ]); $rows = iterator_to_array($reader); self::assertSame([ ["nom" => "clain", "annees" => "45", "ville" => "sainte-clotilde"], ["nom" => "enpion", "annees" => "36", "ville" => "missile fixe"], ], $rows); } }