【问题标题】:Convert key to item with laravel collections使用 laravel 集合将键转换为项目
【发布时间】:2020-07-31 13:09:57
【问题描述】:
[
  "bob" => $books
  "maria" => $otherBooks
]

[
  [
    name => "bob"
    data => $books
  ],
  [
    name => "maria"
    data =>  $otherBooks
  ]
]

【问题讨论】:

  • myitem 值,与任何东西有任何关系,我如何确定该值?如果我收集了帖子,我怎样才能知道关键应该是“帖子”?
  • 更改了示例,因为它不太清楚,对此感到抱歉
  • @Juliatzin 我添加了一个解决方案。让我知道我是否理解错误。如果是这样,那么我会相应地更新它。

标签: laravel collections


【解决方案1】:

您可以使用map,map 采用$item$key,这是您输入数组的键值,作为闭包的参数。如果您将它们映射到预期的数组结构,这应该可以工作。

$result = collect([
  'bob' => $books
  'maria' => $otherBooks
])->map(function ($item, $key) {
    return [
        'name' => $key,
        'data' => $item,
    ]
});

【讨论】:

  • 只是一个建议:这将提供一个以 'bob' 和 'maria' 作为键的集合,以便实现问题中的数组可能将结果转换为数组并获取数组值会很好?如:array_values($result ->toArray())
  • 我想我忘了我可以在 map() 中使用 $key 参数!谢谢
  • "这将给出一个以 'bob' 和 'maria' 作为键的集合" 不,这将给出一个像这样的数组 [['name' => 'maria', $data => $yourItems ]]
【解决方案2】:

您可以使用集合轻松做到这一点。

collect([
  "bob" => $books
  "maria" => $otherBooks
])->map(function ($books, $name) {
    return [
        'name' => $name,
        'data' => $books
    ];
});

【讨论】:

    猜你喜欢
    • 2019-08-11
    • 2016-05-12
    • 1970-01-01
    • 2020-01-06
    • 2019-05-29
    • 2018-02-16
    • 2011-05-04
    • 2018-08-11
    • 2017-06-30
    相关资源
    最近更新 更多