繁体   English   中英

忘记不修改原始集合Laravel 5.7

[英]Forget not modifying the original collection Laravel 5.7

我试图在遍历for循环时从集合中删除随机元素。 这个想法是,每次通过for循环时,可用集合中的项目都不包括在先前迭代中找到和删除的项目。 我尝试在初始收藏夹中使用“忘记”,但仍在结果中找到双打。 任何帮助,将不胜感激,谢谢!

$data = SomeModel::get();
for($i = 1; $i <= $max; $i++) {
  $random = $data->random($numberToPick);
  foreach($random as $option) {
    $data->forget($option->id);
  }
}

我在末尾dd($ data)的确确实看到选择的项目已从最终集合中删除,但是如上所述,我仍然得到一些随机数,这些随机数具有与先前迭代匹配的键。

这里的问题是,忘记将通过其索引删除该项目。 您将集合内对象的ID作为参数,但其索引与ID不同。

尝试这个:

$data = SomeModel::get()->keyBy('id');
for($i = 1; $i <= $max; $i++) {
  $random = $data->random($numberToPick);
  foreach($random as $option) {
    $data->forget($option->id);
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM