编程

Laravel 中使用 Collection::times()

874 2024-09-06 06:40:00

Collection::times() 允许你通过运行指定次数的回调来创建新的 Collection。

比如,假设你想生成 10 个随机字符串。你可以使用 Collection::times() 方法这样做:

use Illuminate\Support\Collection;
use Illuminate\Support\Str;
 
$randomStrings = Collection::times(
    number: 10,
    callback: fn (): string => Str::random(8),
);
 
// $randomStrings is now a Collection with 10 random strings:
// [
//     "aBcDeFgH",
//     "iJkLmNoP",
//     "qRsTuVwX",
//     and so on...
// ]

上面的示例中,该方法接受两个参数:

  1. number - 回调运行的次数。
  2. callback - 回调函数,用来在集合中生成新项目。

回调函数还接受当前迭代次数作为参数。如果你需要使用当前迭代次数来生成项目,这可能很有用。

例如,假设你正在构建一个应用,该应用跟踪以秒为单位完成任务所需的时间。你可能希望以 15 秒的规则间隔在图表中显示数据。你可以使用 Collection::times() 方法生成间隔,如下所示:

use Illuminate\Support\Collection;
 
$intervals = Collection::times(
    number: 10,
    callback: fn (int $index): int => $index * 15,
);
 
// $intervals is now a Collection with 10 intervals:
// [
//     15,
//     30,
//     45,
//     and so on...
// ]

当然,还有其他方法可以生成这些数据。但我觉得 Collection::times() 方法是一种很好的 Laravel-y 方法。它允许代码链式调用,因为结果是一个 Collection,所以我们可以在它上面使用任何其他可用的 Collection 方法。

小结

本文带你快速了解 Collection::times() 方法。你会在项目中使用吗?欢迎留言说说你的看法。