我有一个集合,每个项目的featured
属性都是true或false,所以我想得到两个变量$featured
和$unfeatured
。
我可以这样做:
$featured = $collection.filter(function($item){
return $item->featured;
});
$unfeatured = $collection.filter(function($item){
return !$item->featured;
});
但也许还有更短的路?
答案 0 :(得分:6)
我知道这是一个很老的帖子。我想我会为那些来自搜索的人添加这个。
从5.3开始,您可以像这样使用分区方法:
list($featured, $unfeatured) = $collection->partition(function($item) {
return $item->featured;
});
答案 1 :(得分:0)
您可以使用each()
方法
$featured = [];
$unfeatured = [];
$collection->each(function ($item) use (&$featured, &$unfeatured) {
if ($item->featured) {
$featured[] = $item;
} else {
$unfeatured[] = $item;
}
}