`make() to `make()`

修改理由:
相关信息:
- 类型:文档文章
- 文章: 集合
- 文档: 《Laravel 9 中文文档(9.x)》
此投稿由 Summer 在 2年前 合并。
标题修改:
内容修改:
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 |