从具有特定键、值对的集合中获取项目并将其从 laravel 中的原始集合中删除的方法
Method for getting items from collection with specific key, value pair and also remove it from original collection in laravel
我正在寻找通过特定键和值获取集合中的项目的方法,我找到了一个 where()
、
但我也想在从原始集合中获取该项目后将其删除,但我找不到可以同时执行这两项操作的任何方法。
我见过 pull()
方法,但它通过键获取并从集合中删除该列,但我只想删除特定项目。
我查看了collection doc,但找不到任何本地方法,所以我使用2个方法来实现这个需求,代码如下:
$collection = collect([
['product' => 'Desk', 'price' => 200],
['product' => 'Chair', 'price' => 100],
['product' => 'Bookcase', 'price' => 150],
['product' => 'Door', 'price' => 100],
]);
$filtered_items = $collection->where('price', 100);
$filtered_collection = $collection->whereNotIn('price', [100]);
我认为如果我可以用一种方法完成上述 2 种方法,那么开销会很小,所以我正在寻找其他解决方案,伙计们,预先感谢您的回答。
你需要这个https://laravel.com/docs/5.5/collections#method-partition
$collection = collect([
['product' => 'Desk', 'price' => 200],
['product' => 'Chair', 'price' => 100],
['product' => 'Bookcase', 'price' => 150],
['product' => 'Door', 'price' => 100],
]);
$filtered_items = $collection->where('price', 100);
list($neededCollection, $filteredCollection) = $collection->partition(function ($i) {
return $i['price'] == 100;
});
dd($neededCollection, $filteredCollection);
这样的结果
我正在寻找通过特定键和值获取集合中的项目的方法,我找到了一个 where()
、
但我也想在从原始集合中获取该项目后将其删除,但我找不到可以同时执行这两项操作的任何方法。
我见过 pull()
方法,但它通过键获取并从集合中删除该列,但我只想删除特定项目。
我查看了collection doc,但找不到任何本地方法,所以我使用2个方法来实现这个需求,代码如下:
$collection = collect([
['product' => 'Desk', 'price' => 200],
['product' => 'Chair', 'price' => 100],
['product' => 'Bookcase', 'price' => 150],
['product' => 'Door', 'price' => 100],
]);
$filtered_items = $collection->where('price', 100);
$filtered_collection = $collection->whereNotIn('price', [100]);
我认为如果我可以用一种方法完成上述 2 种方法,那么开销会很小,所以我正在寻找其他解决方案,伙计们,预先感谢您的回答。
你需要这个https://laravel.com/docs/5.5/collections#method-partition
$collection = collect([
['product' => 'Desk', 'price' => 200],
['product' => 'Chair', 'price' => 100],
['product' => 'Bookcase', 'price' => 150],
['product' => 'Door', 'price' => 100],
]);
$filtered_items = $collection->where('price', 100);
list($neededCollection, $filteredCollection) = $collection->partition(function ($i) {
return $i['price'] == 100;
});
dd($neededCollection, $filteredCollection);
这样的结果