php implode 键值对,Laravel中Collection的基本使用

# Laravel 的集合 Collection

## 简介

`Illuminate\Support\Collection` 类提供了一个更具可读性的、更便于处理数组数据的封装,具体例子看下面的代码。

我们使用了 `collect` 函数从数组中创建新的集合实例,对其中的每个元素运行 `strtoupper` 函数之后再移除所有的空元素:

```

$collection = collect(['taylor', 'abigail', null])->map(function ($name) {

return strtoupper($name);

})

->reject(function ($name) {

return empty($name);

});

```

正如你看到的,`Collection` 类允许你链式调用其方法,以达到在底层数组上优雅地执行 map 和 reject 操作。一般来说,集合是不可改变的,这意味着每个 `Collection` 方法都会返回一个全新的 `Collection` 实例。

## 创建集合

如上所述,辅助函数 `collect` 会为给定的数组返回一个新的 `Illuminate\Support\Collection` 实例。也就是说,创建一个集合就这么简单:

```

$collection = collect([1, 2, 3]);

```

> 默认情况下, [Eloquent](https://laravel.com/docs/5.5/eloquent) 查询的结果返回的内容都是 `Collection` 实例。

## 可用的方法

接下来的内容,我们会探讨 `Collection` 类每个可用的方法。**记住,所有方法都可以以方法链的形式优雅地操纵数组。**而且,几乎所有的方法都会返回新的 `Collection` 实例,允许你在必要时保存集合的原始副本。

| 方法名 | 释义 |

| :--- | :--- |

| all [详细](/collections/all.md) | 返回该集合表示的底层**数组** |

| average [详细](/collections/avg.md) | 方法`avg()`的别名 |

| avg [详细](/collections/avg.md) | 返回给定键的**平均值** |

| chunk [详细](/collections/chuck.md) | 将集合拆成多个指定大小的小集合 |

| collapse [详细](/collections/collapse.md) | 将多个数组合并成一个 |

| combine [详细](/collections/combine.md) | 将一个集合的值作为「键」,再将另一个数组或者集合的值作为「值」合并成一个集合 |

| contains [详细](/collections/contains.md) | 判断集合是否包含给定的项目 |

| containsStrict [详细](/collections/containsStrict.md) | 使用「严格模式」来比较所有值 |

| count [详细](/collections/count.md) | 返回该集合内的项目总数 |

| diff [详细](/collections/diff.md) | 基于值求差集 |

| diffAssoc [详细](/collections/diffAssoc.md) | 基于键值对求差集 |

| diffKeys [详细](/collections/diffKeys.md) | 基于键求差集 |

| each [详细](/collections/each.md) | 迭代集合中的内容并将其传递到回调函数中 |

| every [详细](/every) | 可用于验证集合中每一个元素都通过给定的真实测试 |

| except [详细](/collections/except.md) | 返回集合中除了指定键以外的所有项目 |

| filter [详细](/collections/filter.md) | 使用给定的回调函数过滤集合的内容,只留下那些通过给定真实测试的内容 |

| first [详细](/collections/first.md) | 返回集合中通过给定真实测试的第一个元素 |

| flatMap [详细](/collections/flatMap.md) | 遍历集合并将其中的每个值传递到给定的回调 |

| flatten [详细](/collections/flatten.md)| 将多维集合转为一维 |

| flip [详细](/collections/flip.md) | 将集合中的键和对应的数值进行互换 |

| forget [详细](/collections/forget.md) | 通过给定的键来移除掉集合中对应的内容 |

| forPage [详细](/collections/forPage.md) | 返回给定页码上显示的项目的新集合 |

| get [详细](/collections/get.md) | 返回给定键的项目 |

| groupBy [详细](/collections/groupBy.md) | 根据给定的键对集合内的项目进行分组 |

| has [详细](/collections/has.md) | 判断集合中是否存在给定的键 |

| implode [详细](/collections/implode.md) | 合并集合中的项目 |

| intersect [详细](/collections/intersect.md) | 从原集合中删除不在给定数组或集合中的任何值 |

| intersectKey [详细](/collections/intersectKey.md) | 删除原集合中不存在于给定数组或集合中的任何键 |

| isEmpty [详细](/collections/isEmpty.md) | 判断集合是否为空 |

| isNotEmpty [详细](/collections/isNotEmpty.md) | 判断集合是否不为空 |

| keyBy [详细](/collections/keyBy.md) | 以给定的键作为集合的键 |

| keys [详细](/collections/keys.md) | 返回集合的所有键 |

| last [详细](/collections/last.md) | 返回集合中通过给定真实测试的最后一个元素 |

| map [详细](/collections/map.md) | 遍历集合并将每一个值传入给定的回调 |

| mapWithKeys [详细](/collections/mapWithKeys.md) | 遍历集合并将每个值传入给定的回调 |

| max [详细](/collections/max.md) | 返回给定**键**的最大值 |

| median [详细](/collections/median.md) | 方法返回给定**键**的中间值 |

| merge [详细](/collections/merge.md) | 将给定数组或集合合并到原集合 |

| min [详细](/collections/min.md) | 返回给定键的最小值 |

| mode [详细](/collections/mode.md) | 返回给定**键**的[众数值](https://baike.baidu.com/item/%E4%BC%97%E6%95%B0/44796 "百度百科-众数值") |

| nth [详细](/collections/nth.md) | 创建由每隔`n`个元素组成一个新的集合 |

| only [详细](/collections/only.md) | 返回集合中给定键的所有项目 |

| partition [详细](/collections/partition.md) | 配合`list()`方法区分回调函数满足和不满足的数据 |

| pipe [详细](/collections/pipe.md) | 将集合传给给定的回调并返回结果 |

| pluck [详细](/collections/pluck.md) | 获取集合中给定键对应的所有值 |

| pop [详细](/collections/pop.md) | 移除并返回集合中的最后一个项目 |

| prepend [详细](/collections/prepend.md) | 将给定的值添加到集合的开头 |

| pull [详细](/collections/pull.md) | 把给定键对应的值从集合中移除并返回 |

| push [详细](/collections/push.md) | 把给定值添加到集合的末尾 |

| put [详细](/collections/put.md) | 在集合内设置给定的键值对 |

| random [详细](/collections/random.md) | 从集合中返回一个随机项 |

| reduce [详细](/collections/reduce.md) | 将每次迭代的结果传递给下一次迭代直到集合减少为单个值 |

| reject [详细](/collections/reject.md) | 使用指定的回调过滤集合 |

| reverse [详细](/collections/reverse.md) | 倒转集合中项目的顺序 |

| search [详细](/collections/search.md) | 搜索给定的值并返回它的键 |

| shift [详细](/collections/shift.md) | 移除并返回集合的第一个项目 |

| shuffle [详细](/collections/shuffle.md) | 随机排序集合中的项目 |

| slice [详细](/collections/slice.md) | 返回集合中给定值后面的部分 |

| sort [详细](/collections/sort.md) | 保留原数组的键,对集合进行排序 |

| sortBy [详细](/collections/sortBy.md) | 以给定的键对集合进行排序 |

| sortByDesc [详细](/collections/sortByDesc.md) | 与[sortBy](/collections/sortBy.md)一样,以相反的顺序来对集合进行排序 |

| splice [详细](/collections/splice.md) | 删除并返回从给定值后的内容,原集合也会受到影响 |

| split [详细](/collections/split.md) | 将集合按给定的值拆分 |

| sum [详细](/collections/sum.md) | 返回集合内所有项目的总和 |

| take [详细](/collections/take.md) | 返回给定数量项目的新集合 |

| tap [详细](/collections/tap.md) | 将集合传递给回调,在特定点「tap」集合 |

| times [详细](/collections/times.md) | 通过回调在给定次数内创建一个新的集合 |

| toArray [详细](/collections/toArray.md) | 将集合转换成 PHP 数组 |

| toJson [详细](/collections/toJson.md) | 将集合转换成 JSON 字符串 |

| transform [详细](/collections/transform.md) | 迭代集合并对集合内的每个项目调用给定的回调 |

| union [详细](/collections/union.md) | 将给定的数组添加到集合中 |

| unique [详细](/collections/unique.md) | 返回集合中所有唯一的项目 |

| uniqueStrict [详细](/collections/uniqueStrict.md) | 使用严格模式返回集合中所有唯一的项目 |

| values [详细](/collections/values.md) | 返回键被重置为连续编号的新集合 |

| when [详细](/collections/when.md) | 当传入的第一个参数为 true 的时,将执行给定的回调 |

| where [详细](/collections/where.md) | 通过给定的键值过滤集合 |

| whereStrict [详细](/collections/whereStrict.md) | 使用严格模式通过给定的键值过滤集合 |

| whereIn [详细](/collections/whereIn.md) | 通过给定的键值数组来过滤集合 |

| whereInStrict [详细](/collections/whereStrict.md) | 使用严格模式通过给定的键值数组来过滤集合 |

| whereNotIn [详细](/collections/whereNotIn.md) | 集合中不包含的给定键值对进行匹配 |

| whereNotInStrict [详细](/collections/whereNotInStrict.md) | 使用严格模式通过集合中不包含的给定键值对进行匹配 |

| zip [详细](/collections/zip.md) | 将给定数组的值与相应索引处的原集合的值合并在一起 |

## 在项目中单独使用

### 安装

Laravel中的Collection使用Composer管理,所以我们可以在项目中使用composer安装到非Laravel项目中,比如我们新建一个collections目录,通过下面使用命令安装

```

mkdir collections && cd collections

composer require illuminate/support

```

执行完上面的命令将得到所需要的package。

### 使用

```

// 引入package

require __DIR__ . '/vendor/autoload.php';

```

## 其他

如果在js中也需要使用类似的数组操作,可以参考 [ecrmnn/collect.js](https://github.com/ecrmnn/collect.js) 的相关操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值