从 Laravel 中的集合中获取键值

Posted

技术标签:

【中文标题】从 Laravel 中的集合中获取键值【英文标题】:Get key values from a collection in Laravel 【发布时间】:2022-01-20 07:39:43 【问题描述】:

我有这个收藏

1 => #27
      +"id": 1
      +"name": "Zel"
      +"age": "43"
    
2 => #28
      +"id": 2
      +"name": "Kol"
      +"age": "56"
    
3 => #29
      +"id": 3
      +"name": "Mil"
      +"age": "32"
    

我想返回一个包含键值作为字符串的数组,如下所示:

[
'id',
'name',
'age',
]

有人可以帮我吗?

【问题讨论】:

在所有 Laravel 集合中都有一个 keys 方法可以满足你的需求。 【参考方案1】:

Laravel 集合有一个 keys() 方法,你可以像这样简单地使用它:

$keys = $collection->keys();
$get = $keys->all();

Laravel Documentation里都写得很清楚

编辑

查看您的编辑后,我首先考虑的是,如果您的收藏是一致的,您可以获得第一个,然后从那里获取密钥:

$keys = $collection->first();
$get = $keys->keys()->all();

或者简单地说$collection->first()->keys()->all();

编辑

这是我如何重现您的问题的方法:

$collection = collect([
    [
        'id' => 1, 
        'name' => 'Zel',
        'age' => 43
    ],
    [
        'id' => 2, 
        'name' => 'Kol',
        'age' => 56
    ],
    [
        'id' => 3, 
        'name' => 'Mil',
        'age' => 32
    ],
]);
$keys = collect($collection->first())->keys()->all();

这是我得到的结果:

array:3 [▼
  0 => "id"
  1 => "name"
  2 => "age"
]

如果它仍然根据您的最后评论返回集合或对象,您可以尝试以下任何一种:

$keys = $keys->toArray();
$keys = collect($keys)->toArray();

【讨论】:

我正在调用未定义的方法 stdClass::keys() 试试这个collect($collection->first())->keys(); 作品 - 谢谢,最后我只是将它转换为数组【参考方案2】:

使用array_keys

$keys = array_keys($collection->first());

【讨论】:

这不起作用,因为它给出的键是 1,2, 3 对不起,我更新了我的答案。 @Elisa

以上是关于从 Laravel 中的集合中获取键值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中获取嵌套的键值

如何从 laravel 中的集合中获取 ID?

Laravel 延迟加载的问题

使用 Datatables 在 Laravel 中处理大量行的最佳方法是啥?

遍历数组集合并返回命名键值对(Laravel/Eloquent)

我想自学laraver,请诸位前辈给一些建议,谢谢