【问题标题】:Get key values from a collection in Laravel从 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 方法可以满足你的需求。

标签: arrays laravel collections


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 2018-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多