Laravel 中使用 Collection::times()
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...
// ]
上面的示例中,该方法接受两个参数:
number
- 回调运行的次数。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()
方法。你会在项目中使用吗?欢迎留言说说你的看法。