【问题标题】:Remove duplicate values from foreach从 foreach 中删除重复值
【发布时间】:2018-10-25 13:17:08
【问题描述】:

我的数据库中有重复的任务,所以我的 foreach 中没有任何带有标签的重复任务

@foreach ($Tag->Tasks as $Task)


  <li> Task :: {{ $Task->task_name }} </li>
   @foreach ($Task->tasktags as $TaskTag)
  <li> Task Tags :: {{ $TaskTag->name }} </li>

   @endforeach
@endforeach

【问题讨论】:

  • 感觉芽太宽了,可以扩展吗?
  • 谁知道2个任务是相等的?
  • 你想要什么输出,因为这是刀片循环,与数据库删除重复条目无关
  • 两件事:发布您的控制器代码并解释您使用哪些字段来知道任务重复

标签: php laravel foreach


【解决方案1】:

在您的控制器中使用(在视图中插入参数之前)array_unique 函数

更多:http://php.net/manual/en/function.array-unique.php

如果你有集合对象: https://laravel.com/docs/master/collections#method-unique

【讨论】:

  • 这不起作用,因为数据是一个集合对象
【解决方案2】:

查看独特的方法here

@foreach ($Tag->Tasks as $Task)

   <li> Task :: {{ $Task->task_name }} </li>

   $uniqueTaskTags = $Task->tasktags->unique();

   @foreach ($uniqueTaskTags as $TaskTag)
      <li> Task Tags :: {{ $TaskTag->name }} </li>
   @endforeach

@endforeach

【讨论】:

    【解决方案3】:

    使用这个不会打印重复的数据

    {!! $Tag->Tasks = $Tag->Tasks->unique(); !!}
    @foreach ($Tag->Tasks as $Task)
        <li> Task :: {{ $Task->task_name }} </li>
        {!! $Task->tasktags = $Task->tasktags->unique(); !!}
        @foreach ($Task->tasktags as $TaskTag)
            <li> Task Tags :: {{ $TaskTag->name }} </li>
        @endforeach
     @endforeach
    

    【讨论】:

      猜你喜欢
      • 2018-07-26
      • 2014-11-03
      • 2019-12-07
      • 1970-01-01
      • 2017-02-23
      • 2013-04-20
      • 2014-03-25
      • 2018-03-01
      • 1970-01-01
      相关资源
      最近更新 更多