如何使用 Symfony Yaml 转储空数组

Roe*_*ers 4 php yaml symfony

我正在尝试使用Symfony Yaml dump函数输出一些嵌套的 php 数组数据。

use \Symfony\Component\Yaml\Yaml;

echo Yaml::dump([
    'arr'=>[],
    'foo'=>'bar',
]);
Run Code Online (Sandbox Code Playgroud)

但是,转储的 YAML 包含一个空对象:

arr: {  }
foo: bar
Run Code Online (Sandbox Code Playgroud)

虽然我想要一个空列表:

arr: []
foo: bar
Run Code Online (Sandbox Code Playgroud)

我尝试使用该Yaml::DUMP_OBJECT_AS_MAP标志,使用ArrayObject代替数组文字,并使用EmptyIterator,但都无济于事。

我发现了两个与此相关的已关闭错误: https: //github.com/symfony/symfony/issues/9870https://github.com/symfony/symfony/issues/15781,但那里的解决方案似乎没有工作,或者对我来说有点太老套和脆弱(YAML 输出上的 str_replace,brrrr)

我有一个简单的测试用例,其中包含迄今为止我尝试过的内容: https: //github.com/ComaVN/php-yaml-empty-array

对于如何解决这个问题,有任何的建议吗?

Chr*_*idt 7

从 Symfony 3.3(2017 年 5 月发布)开始,您可以使用新Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE选项:

Yaml::dump($object, 2, 4, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE);
Run Code Online (Sandbox Code Playgroud)

此功能已在PR 21471中添加。