`make() to `make()`
修改理由:
相关信息:
- 类型:文档文章
- 文章: 集合
- 文档: 《Laravel 9 中文文档(9.x)》
此投稿由 Summer 在 3年前 合并。
标题修改:
内容修改:
| Old | New | Differences |
|---|---|---|
| 1 | ||
| 2 | 1 | # 集合 |
| 3 | 2 | |
| 4 | 3 | - [介绍](#introduction) | … | … |
| 54 | 53 | |
| 55 | 54 | // ['FIRST', 'SECOND'] |
| 56 | 55 | |
| 57 | ||
| 58 | ||
| 56 | ||
| 57 | ||
| 59 | 58 | 通常,您应该在[service provider](/docs/laravel/9.x/providers)的 `boot` 方法中声明集合宏。 |
| 60 | 59 | |
| 61 | 60 | <a name="macro-arguments"></a> | … | … |
| 232 | 231 | |
| 233 | 232 | </div> |
| 234 | 233 | |
| 235 | ||
| 236 | ||
| 234 | ||
| 235 | ||
| 237 | 236 | <a name="method-listing"></a> |
| 238 | 237 | ## 方法列表 |
| 239 | 238 | … | … |
| 322 | 321 | <a name="method-collapse"></a> |
| 323 | 322 | #### `collapse()` {.collection-method} |
| 324 | 323 | |
| 325 | ||
| 326 | ||
| 324 | ||
| 325 | ||
| 327 | 326 | `collapse` 方法将数组集合折叠成一个单一的平面集合: |
| 328 | 327 | |
| 329 | 328 | $collection = collect([ | … | … |
| 412 | 411 | |
| 413 | 412 | // false |
| 414 | 413 | |
| 415 | ||
| 416 | ||
| 414 | ||
| 415 | ||
| 417 | 416 | 或者,您可以将字符串传递给 `contains` 方法,以确定集合是否包含给定的项目值: |
| 418 | 417 | |
| 419 | 418 | $collection = collect(['name' => 'Desk', 'price' => 100]); | … | … |
| 484 | 483 | |
| 485 | 484 | // ['gmail.com' => 2, 'yahoo.com' => 1] |
| 486 | 485 | |
| 487 | ||
| 488 | ||
| 486 | ||
| 487 | ||
| 489 | 488 | <a name="method-crossjoin"></a> |
| 490 | 489 | #### `crossJoin()` {.collection-method} |
| 491 | 490 | … | … |
| 583 | 582 | // ['color' => 'orange', 'remain' => 6] |
| 584 | 583 | |
| 585 | 584 | <a name="method-diffkeys"></a> |
| 586 | ||
| 587 | ||
| 585 | ||
| 586 | ||
| 588 | 587 | #### `diffKeys()` {.collection-method} |
| 589 | 588 | |
| 590 | 589 | `diffKeys` 方法将集合与另一个集合或基于其键的普通 PHP `array` 进行比较。 此方法将返回给定集合中不存在的原始集合中的键/值对: | … | … |
| 666 | 665 | |
| 667 | 666 | 如果要在转储集合后停止执行脚本,请改用 [`dd`](#method-dd) 方法。 |
| 668 | 667 | |
| 669 | ||
| 670 | ||
| 668 | ||
| 669 | ||
| 671 | 670 | <a name="method-duplicates"></a> |
| 672 | 671 | #### `duplicates()` {.collection-method} |
| 673 | 672 | … | … |
| 751 | 750 | |
| 752 | 751 | // true |
| 753 | 752 | |
| 754 | ||
| 755 | ||
| 753 | ||
| 754 | ||
| 756 | 755 | <a name="method-except"></a> |
| 757 | 756 | #### `except()` {.collection-method} |
| 758 | 757 | … | … |
| 834 | 833 | |
| 835 | 834 | // ['name' => 'Diego', 'age' => 23] |
| 836 | 835 | |
| 837 | ||
| 838 | ||
| 836 | ||
| 837 | ||
| 839 | 838 | 与 [where](#method-where) 方法一样,您可以将一个参数传递给 `firstWhere` 方法。 在这种情况下,`firstWhere` 方法将返回给定项目键值为“真”的第一个项目: |
| 840 | 839 | |
| 841 | 840 | $collection->firstWhere('age'); | … | … |
| 922 | 921 | |
| 923 | 922 | // ['taylor' => 'name', 'laravel' => 'framework'] |
| 924 | 923 | |
| 925 | ||
| 926 | ||
| 924 | ||
| 925 | ||
| 927 | 926 | <a name="method-forget"></a> |
| 928 | 927 | #### `forget()` |
| 929 | 928 | … | … |
| 1006 | 1005 | ] |
| 1007 | 1006 | */ |
| 1008 | 1007 | |
| 1009 | ||
| 1010 | ||
| 1008 | ||
| 1009 | ||
| 1011 | 1010 | 您可以传递回调,而不是传递字符串 `key`。 回调应返回您希望通过以下方式键入组的值: |
| 1012 | 1011 | |
| 1013 | 1012 | $grouped = $collection->groupBy(function ($item, $key) { | … | … |
| 1099 | 1098 | |
| 1100 | 1099 | // Desk, Chair |
| 1101 | 1100 | |
| 1102 | ||
| 1103 | ||
| 1101 | ||
| 1102 | ||
| 1104 | 1103 | 如果集合包含简单的字符串或数值,则应将“胶水”作为唯一参数传递给该方法: |
| 1105 | 1104 | |
| 1106 | 1105 | collect([1, 2, 3, 4, 5])->implode('-'); | … | … |
| 1168 | 1167 | collect(['a'])->join(', ', ' and '); // 'a' |
| 1169 | 1168 | collect([])->join(', ', ' and '); // '' |
| 1170 | 1169 | |
| 1171 | ||
| 1172 | ||
| 1170 | ||
| 1171 | ||
| 1173 | 1172 | <a name="method-keyby"></a> |
| 1174 | 1173 | #### `keyBy()` {.collection-method} |
| 1175 | 1174 | … | … |
| 1244 | 1243 | |
| 1245 | 1244 | 静态`macro()`方法允许您在运行时向“集合”类添加方法。 有关详细信息,请参阅有关 [扩展集合](#extending-collections) 的文档。 |
| 1246 | 1245 | |
| 1247 | ||
| 1248 | ||
| 1246 | ||
| 1247 | ||
| 1249 | 1248 | <a name="method-make"></a> |
| 1250 | #### `make() | |
| 1249 | #### `make()` | |
| 1251 | 1250 | |
| 1252 | 1251 | 静态 `make` 方法可以创建一个新的集合实例。请参照 [创建集合](#creating-collections) 部分。 |
| 1253 | 1252 | … | … |
| 1349 | 1348 | |
| 1350 | 1349 | // ['John Doe', 'Jane Doe'] |
| 1351 | 1350 | |
| 1352 | ||
| 1353 | ||
| 1351 | ||
| 1352 | ||
| 1354 | 1353 | <a name="method-mapwithkeys"></a> |
| 1355 | 1354 | #### `mapWithKeys()` {.collection-method} |
| 1356 | 1355 | … | … |
| 1456 | 1455 | |
| 1457 | 1456 | // ['product_id' => [1, 2], 'price' => [100, 200], 'discount' => false] |
| 1458 | 1457 | |
| 1459 | ||
| 1460 | ||
| 1458 | ||
| 1459 | ||
| 1461 | 1460 | <a name="method-min"></a> |
| 1462 | 1461 | #### `min()` {.collection-method} |
| 1463 | 1462 | … | … |
| 1553 | 1552 | |
| 1554 | 1553 | // [0, 0, 'A', 'B', 'C'] |
| 1555 | 1554 | |
| 1556 | ||
| 1557 | ||
| 1555 | ||
| 1556 | ||
| 1558 | 1557 | <a name="method-partition"></a> |
| 1559 | 1558 | #### `partition()` |
| 1560 | 1559 | … | … |
| 1678 | 1677 | |
| 1679 | 1678 | // ['Rosa', 'Judith'] |
| 1680 | 1679 | |
| 1681 | ||
| 1682 | ||
| 1680 | ||
| 1681 | ||
| 1683 | 1682 | 如果存在重复键,则将最后一个匹配元素插入到 plucked 集合中: |
| 1684 | 1683 | |
| 1685 | 1684 | $collection = collect([ | … | … |
| 1797 | 1796 | |
| 1798 | 1797 | // 4 - (retrieved randomly) |
| 1799 | 1798 | |
| 1800 | ||
| 1801 | ||
| 1799 | ||
| 1800 | ||
| 1802 | 1801 | 您可以将一个整数传递给“random”,以指定要随机检索的项目数。 当明确传递您希望接收的项目数时,始终返回项目集合: |
| 1803 | 1802 | |
| 1804 | 1803 | $random = $collection->random(3); | … | … |
| 1878 | 1877 | return [$creditsRemaining, $batch]; |
| 1879 | 1878 | }, $creditsAvailable, collect()); |
| 1880 | 1879 | |
| 1881 | ||
| 1882 | ||
| 1880 | ||
| 1881 | ||
| 1883 | 1882 | <a name="method-reduce-spread"></a> |
| 1884 | 1883 | #### `reduceSpread()` {.collection-method} |
| 1885 | 1884 | … | … |
| 1972 | 1971 | ] |
| 1973 | 1972 | */ |
| 1974 | 1973 | |
| 1975 | ||
| 1976 | ||
| 1974 | ||
| 1975 | ||
| 1977 | 1976 | <a name="method-search"></a> |
| 1978 | 1977 | #### `search()` {.collection-method} |
| 1979 | 1978 | … | … |
| 2068 | 2067 | |
| 2069 | 2068 | // [[1, 2, 3], [3, 4, 5]] |
| 2070 | 2069 | |
| 2071 | ||
| 2072 | ||
| 2070 | ||
| 2071 | ||
| 2073 | 2072 | <a name="method-skip"></a> |
| 2074 | 2073 | #### `skip()` {.collection-method} |
| 2075 | 2074 | … | … |
| 2150 | 2149 | |
| 2151 | 2150 | 默认情况下,返回的切片将保留键。 如果您不希望保留原始键,可以使用 [`values`](#method-values) 方法重新索引它们。 |
| 2152 | 2151 | |
| 2153 | ||
| 2154 | ||
| 2152 | ||
| 2153 | ||
| 2155 | 2154 | <a name="method-sole"></a> |
| 2156 | 2155 | #### `sole()` {.collection-method} |
| 2157 | 2156 | … | … |
| 2208 | 2207 | |
| 2209 | 2208 | > 技巧:如果您需要对嵌套数组或对象的集合进行排序,请参阅 [`sortBy`](#method-sortby) 和 [`sortByDesc`](#method-sortbydesc) 方法。 |
| 2210 | 2209 | |
| 2211 | ||
| 2212 | ||
| 2210 | ||
| 2211 | ||
| 2213 | 2212 | <a name="method-sortby"></a> |
| 2214 | 2213 | #### `sortBy()` {.collection-method} |
| 2215 | 2214 | … | … |
| 2300 | 2299 | ] |
| 2301 | 2300 | */ |
| 2302 | 2301 | |
| 2303 | ||
| 2304 | ||
| 2302 | ||
| 2303 | ||
| 2305 | 2304 | 当按多个属性对集合进行排序时,您还可以提供定义每个排序操作的闭包: |
| 2306 | 2305 | |
| 2307 | 2306 | $collection = collect([ | … | … |
| 2398 | 2397 | ] |
| 2399 | 2398 | */ |
| 2400 | 2399 | |
| 2401 | ||
| 2402 | ||
| 2400 | ||
| 2401 | ||
| 2403 | 2402 | 回调必须是返回小于、等于或大于零的整数的比较函数。 有关更多信息,请参阅 [`uksort`](https://www.php.net/manual/en/function.uksort.php#refsect1-function.uksort-parameters) 上的 PHP 文档,这是 PHP 函数 `sortKeysUsing` 方法在内部使用。 |
| 2404 | 2403 | |
| 2405 | 2404 | <a name="method-splice"></a> | … | … |
| 2493 | 2492 | |
| 2494 | 2493 | // 1272 |
| 2495 | 2494 | |
| 2496 | ||
| 2497 | ||
| 2495 | ||
| 2496 | ||
| 2498 | 2497 | 此外,您可以传递自己的闭包来确定要对集合的哪些值求和: |
| 2499 | 2498 | |
| 2500 | 2499 | $collection = collect([ | … | … |
| 2590 | 2589 | |
| 2591 | 2590 | // 1 |
| 2592 | 2591 | |
| 2593 | ||
| 2594 | ||
| 2592 | ||
| 2593 | ||
| 2595 | 2594 | <a name="method-times"></a> |
| 2596 | 2595 | #### `times()` |
| 2597 | 2596 | … | … |
| 2685 | 2684 | ] |
| 2686 | 2685 | */ |
| 2687 | 2686 | |
| 2688 | ||
| 2689 | ||
| 2687 | ||
| 2688 | ||
| 2690 | 2689 | <a name="method-union"></a> |
| 2691 | 2690 | #### `union()` |
| 2692 | 2691 | … | … |
| 2755 | 2754 | |
| 2756 | 2755 | > 技巧:这个方法的行为在使用 [Eloquent 集合](/docs/laravel/9.x/eloquent-collections#method-unique) 时被修改。 |
| 2757 | 2756 | |
| 2758 | ||
| 2759 | ||
| 2757 | ||
| 2758 | ||
| 2760 | 2759 | <a name="method-uniquestrict"></a> |
| 2761 | 2760 | #### `uniqueStrict()` |
| 2762 | 2761 | … | … |
| 2864 | 2863 | |
| 2865 | 2864 | // [1, 2, 3, 4] |
| 2866 | 2865 | |
| 2867 | ||
| 2868 | ||
| 2866 | ||
| 2867 | ||
| 2869 | 2868 | 可以将第二个回调传递给该 `when` 方法。`when` 当给方法的第一个参数计算结果为时,将执行第二个回调 `false`: |
| 2870 | 2869 | |
| 2871 | 2870 | $collection = collect([1, 2, 3]); | … | … |
| 2966 | 2965 | |
| 2967 | 2966 | 与 `whenNotEmpty` 相反的方法,请查看 [`whenEmpty`](#method-whenempty) 方法。 |
| 2968 | 2967 | |
| 2969 | ||
| 2970 | ||
| 2968 | ||
| 2969 | ||
| 2971 | 2970 | <a name="method-where"></a> |
| 2972 | 2971 | #### `where()` |
| 2973 | 2972 | … | … |
| 3065 | 3064 | ] |
| 3066 | 3065 | */ |
| 3067 | 3066 | |
| 3068 | ||
| 3069 | ||
| 3067 | ||
| 3068 | ||
| 3070 | 3069 | `whereIn` 方法在检查项目值时使用 "loose" 比较,这意味着具有整数值的字符串将被视为等于相同值的整数。 使用 [`whereInStrict`](#method-whereinstrict) 方法使用“strict”比较进行过滤。 |
| 3071 | 3070 | |
| 3072 | 3071 | <a name="method-whereinstrict"></a> | … | … |
| 3143 | 3142 | |
| 3144 | 3143 | `whereNotIn` 方法在检查项目值时使用“loose”比较,这意味着具有整数值的字符串将被视为等于具有相同值的整数。 使用 [`whereNotInStrict`](#method-wherenotinstrict) 方法使用“strict”比较进行过滤。 |
| 3145 | 3144 | |
| 3146 | ||
| 3147 | ||
| 3145 | ||
| 3146 | ||
| 3148 | 3147 | <a name="method-wherenotinstrict"></a> |
| 3149 | 3148 | #### `whereNotInStrict()` |
| 3150 | 3149 | … | … |
| 3237 | 3236 | |
| 3238 | 3237 | 集合也提供对「高阶消息传递」的支持,即集合常见操作的快捷方式。支持高阶消息传递的集合方法有: [`average`](#method-average),[`avg`](#method-avg),[`contains`](#method-contains), [`each`](#method-each),[`every`](#method-every),[`filter`](#method-filter), [`first`](#method-first),[`flatMap`](#method-flatmap),[`groupBy`](#method-groupby),[`keyBy`](#method-keyby),[`map`](#method-map),[`max`](#method-max), [`min`](#method-min),[`partition`](#method-partition),[`reject`](#method-reject), [`skipUntil`](#method-skipuntil),[`skipWhile`](#method-skipwhile),[`some`](#method-some),[`sortBy`](#method-sortby),[`sortByDesc`](#method-sortbydesc), [`sum`](#method-sum),[`takeUntil`](#method-takeuntil),[`takeWhile`](#method-takewhile) 和 [`unique`](#method-unique)。 |
| 3239 | 3238 | |
| 3240 | ||
| 3241 | ||
| 3239 | ||
| 3240 | ||
| 3242 | 3241 | 每个高阶消息都可以作为集合实例上的动态属性进行访问。 例如,让我们使用 `each` 高阶消息来调用集合中每个对象的方法: |
| 3243 | 3242 | |
| 3244 | 3243 | use App\Models\User; | … | … |
| 3280 | 3279 | // Process the log entry... |
| 3281 | 3280 | }); |
| 3282 | 3281 | |
| 3283 | ||
| 3284 | ||
| 3282 | ||
| 3283 | ||
| 3285 | 3284 | 或者,假设您需要遍历 10,000 个 Eloquent 模型。 使用传统 Laravel 集合时,所有 10,000 个 Eloquent 模型必须同时加载到内存中: |
| 3286 | 3285 | |
| 3287 | 3286 | use App\Models\User; | … | … |
| 3437 | 3436 | |
| 3438 | 3437 | > 注意:改变集合的方法(例如 `shift`、`pop`、`prepend` 等)在 `LazyCollection` 类中**不**可用。 |
| 3439 | 3438 | |
| 3440 | ||
| 3441 | ||
| 3439 | ||
| 3440 | ||
| 3442 | 3441 | <a name="lazy-collection-methods"></a> |
| 3443 | 3442 | ### 惰性集合方法 |
| 3444 | 3443 | … | … |
| 3515 | 3514 | // 前 5 个用户数据从缓存中获取 |
| 3516 | 3515 | // 剩余的(15个)用户数据从数据库中查询 |
| 3517 | 3516 | $users->take(20)->all(); |
| 3518 | ``` | |
| 3517 | ``` | |
| 3519 | 3518 |
关于 LearnKu