laravel集合方法(或PHP数组方法)是否有办法移出集合的第一个键/值对?
也就是说,如果我有以下小程序
$collection = collect(['key1'=>'value1','key2'=>'value2']);
var_dump(
$collection->first()
);
var_dump(
$collection->shift()
);
我可以在收集开始时shift()
value1
,或者在不通过first()
删除它的情况下抓取它。我希望通过一行代码移出或抓住第一个值的键(即key1
)。我知道我可以做这样的事情
$result = (function($c){
foreach($c as $key=>$value)
{
return $key;
}
})($collection);
但是我希望 - 如果Laravel有更优雅/紧凑的东西那么/想知道。
答案 0 :(得分:3)
Splice可以为您服务:
$collection = collect(['key1'=>'value1','key2'=>'value2']);
$chunked = $collection->splice(0, 1);
print_r($chunked);
//Array([key1] => value1)
print_r($collection->all());
//Array ( [key2] => value2 )
答案 1 :(得分:2)
获取密钥的一种方法是使用
$collectionOfKeys = $collection->keys();
要获得第一把钥匙,你可以这样做:
$key = $collection->keys()->first();
但是,由于keys()将返回一个新集合,因此无法将值从原始集合中移出一行,但您可以使用忘记$ key或只是移动原始集合之后。
$collection->forget($key);
// or $collection->shift();
答案 2 :(得分:1)
抓住一个元素(拳头或最后):
第一个
$collection->take(1);
结果
=> Illuminate\Support\Collection {#926
all: [
"key1" => "value1",
],
}
最后一个
$collection->take(-1);
结果
=> Illuminate\Support\Collection {#924
all: [
"key2" => "value2",
],
}
抓住第一把钥匙
$collection->take(1)->keys()->first();
结果
"key1"
抓住第一把钥匙
key($collection->take(1)->toArray());
结果
"key1"