php - 如何在操作另一个集合的同时遍历集合中的每条记录?
问题描述
使用 Laravel 我有两个模型,Prize
每个Tickets
奖品只能有一张与之关联的票。
遍历 时Prizes
,我想为每个人分配一张唯一的票。为此,我从集合中随机选择一个,然后在分配后将其从集合中删除。
我在每次each
通话时都注意到,但是一些奖品具有相同的票证 ID,我怀疑已经分配的票证没有从循环中$tickets
删除each
。
有人可以解释这是为什么以及如何正确编码吗?
$prizes = Prize::all()->limit(5)->get();
$tickets = Tickets::all()->limit(5)->get();
// iterate over runner up prizes
$prizes->each(function ($prize, $key) use($tickets) {
// select ticket from bag
$winner = $tickets->random();
// assign to prize
$prize->ticket_winner_id = $winner->id;
// remove id from remainder
$tickets = $tickets->except($winner->id);
});
解决方案
为什么不尝试在使用 $tickets 之前添加一个 & 符号:
$prizes = Prize::all()->limit(5)->get();
$tickets = Tickets::all()->limit(5)->get();
// iterate over runner up prizes
$prizes->each(function ($prize, $key) use(&$tickets) {
// select ticket from bag
$winner = $tickets->random();
// assign to prize
$prize->ticket_winner_id = $winner->id;
// remove id from remainder
$tickets = $tickets->except($winner->id);
});
这会对 php 表示您不想要该变量的副本并且您想要对其进行变异。
推荐阅读
- html - primeng 数据表列宽度根据内容自动调整
- backbone-events - 我想要一个带有平均值和标准差的折线图
- javascript - 为什么mongodb一个接一个地给出这样一个系列问题?
- r - 如何在 R 中逐行比较两个不同的矩阵?
- r - S4 类是对象吗?
- azcopy - AZCopy 日期时间
- plsql - 如何将 POUPPLOV 中的选定值传递给 Oracle-APEX 中的 Select 查询
- sql - 带有患者的sql查询
- javascript - 未捕获的错误:尚未为上下文加载模块名称“express”:_
- mysql - 如何在mysql中自定义自动增量以从默认值开始