【问题标题】:PHP Collection flatten object only if it contains a key只有当它包含一个键时 PHP 集合才会展平对象
【发布时间】:2021-11-12 06:20:36
【问题描述】:

如果数组中的某些项包含items 的键,我想将它们展平,例如以下对象:

{
  "key1": {
    "order": 1,
    "name": "Test"
  },
  "group1": {
    "order": 1,
    "name": "Test",
    "items": {
      "key2": {
        "order": 1,
        "name": "Test"
      },
      "key3": {
        "order": 1,
        "name": "Test"
      }
    }
  }
}

应该扁平化为如下格式,所以基本上将组内的项目删除到根级别:

{
  "key1": {
    "order": 1,
    "name": "Test"
  },
  "key2": {
    "order": 1,
    "name": "Test"
  },
  "key3": {
    "order": 1,
    "name": "Test"
  }
}

我已将此对象放入Illuminate\Database\Eloquent\Collection,因此我可以使用flatMapflatten 不起作用,因为我不想完全压平它。

【问题讨论】:

  • 你能分享你输入数组的var_export()吗?

标签: php laravel collections


【解决方案1】:

假设您使用的是 Laravel,您是否考虑过资源和集合?你也可以试试 Laravel collapse() 方法,可以在这里找到:collapse method on collections

$collection = collect([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]);

$collapsed = $collection->collapse();

$collapsed->all();

// [1, 2, 3, 4, 5, 6, 7, 8, 9]

【讨论】:

  • 在 Laravel 上不完整,我们正在使用一些包。再次仔细检查问题,伙计,我无法完全折叠,也许折叠/展平是错误的词。
猜你喜欢
  • 2011-07-23
  • 2014-07-10
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
  • 2018-12-10
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多