【问题标题】:Yaml nested arrays in phpphp中的Yaml嵌套数组
【发布时间】:2017-04-03 19:54:34
【问题描述】:

试图转换嵌套的php数组

$ar:3 [▼
  "sotr" => array:5 [▼
    0 => {#190 ▼
      +"sId": "1"
      +"sFIO": "Родион Романович Мишин"
      +"sSalary": "7477.59"
    }
    1 => {#192 ▶}
    2 => {#193 ▶}
    3 => {#194 ▶}
    4 => {#195 ▶}
  ]
  "ticket" => array:5 [▶]
  "task" => array:4 [▶]
]

在 Laravel 中使用 Symfony\Component\Yaml\Yaml 进入 YAML 字符串。所以,当我使用

$data = Yaml::dump($ar);

我看到这样的空数组:

sotr:\n
    - null\n
    - null\n
    - null\n
    - null\n
    - null\n

我该如何解决这个问题?

【问题讨论】:

  • 是\n 换行符还是两个单独的字符?空序列在哪里(YAML 没有集合类型数组)?我在那里看到的唯一序列(假设 `\n' 是换行符)有 5 个元素。
  • 我需要表字段的名称而不是 null - sId、sFIO、sSalary。如何创建正确的输出数组?
  • @NastyaKeller #190、#192 和其他是否意味着这些是对象而不是数组(数字是它们的 id)?我不认为 dump 可以处理除标量和数组以外的任何东西。
  • 可能不得不寻找另一种解决方案。感谢您的回复。

标签: php arrays laravel yaml


【解决方案1】:

解决!可能这个解决方案不是那么聪明,但它确实有效。 将数组转换为 JSON 字符串:

$data = json_decode(json_encode($ar), true);

然后使用 Symfony\Component\Yaml\Dumper 类

$dumper = new Dumper();
$yaml =  $dumper->dump($data);

这里是 YAML 格式的字符串:

sotr:
    -
        sId: '1'
        sFIO: 'Родион Романович Мишин'
        sSalary: '7477.59'

【讨论】:

    猜你喜欢
    • 2021-12-18
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多