【问题标题】:Add elements to an array inside a foreach loop将元素添加到 foreach 循环内的数组
【发布时间】:2019-03-31 22:48:38
【问题描述】:

正在尝试使用此代码在“我的刀片”任务中不重复

我已经编辑了我的问题,所以我添加了控制器和完整的刀片代码

我的控制器

    $posts2 = Path::with(['pathtags' => function ($q) use ($TagArray)
     {$q->with(['Tasks' => function ($q) use ($TagArray) {$q->has('tasktags', '=', 2)
            ->with('tasktags');
        }]);
    }])->where('id', '=', 1)->get();

我的剑

     @foreach ($posts2 as $item)
      <h2> {{$item->name}}</h2>
  @foreach ($item->pathtags as $Tag)
@foreach ($Tag->Tasks as $Task)

   @php $a=array(); @endphp

    @if (in_array($Task->task_name,$a))
    <li> Task :: {{ $Task->task_name }} </li>
@php
    array_push($a,"$Task->task_name");
 @endphp
@else {
<li> Task :: Not Found </li>
}
@endif
@endforeach
@endforeach
@endforeach

【问题讨论】:

标签: php laravel loops for-loop foreach


【解决方案1】:

改变这个

array_push($a,"$Task->task_name");

与

array_push($a, $Task->task_name);
// or
$a[] = $Task->task_name;

【讨论】:

  • Not Working id 做了 dd($a) 我得到空数组
【解决方案2】:

您在每次迭代中清空数组。在 foreach 循环之前移动数组的初始化。此外,整个逻辑是错误的。您正在检查该项目是否存在于数组中,如果存在,请再次添加它。

@php $a=array(); @endphp
@foreach ($Tag->Tasks as $Task)
    @if (!in_array($Task->task_name,$a))
        <li> Task :: {{ $Task->task_name }} </li>
        @php
            array_push($a,$Task->task_name);
        @endphp
    @else 
          <li> Task :: Duplicated </li>
    @endif
@endforeach

【讨论】:

  • 我仍然得到空数组
  • OK 这次没有错误,但它会返回重复的任务,但如果不是否则它会返回,所以我认为我们错过了一些东西
  • 我不明白。你没有得到什么你想要的输出?如果您只想显示独特的任务,您可以完全删除@else 部分
  • 从标签获取任务后数组被清理
  • 我已经添加了完整的刀片代码
【解决方案3】:

在库存 PHP 中,您可以使用 array_count_values 来获取每个数组项的计数。

然后使用 array_diff 或 array_intersect 来获取不同的唯一或重复项。
Array_keys 返回原始数组中的值。

$arr = ["one", "one", "two", "two", "three"];

$count = array_count_values($arr);

echo "duplicates \n";
var_dump(array_keys(array_diff($count, [1])));

echo "uniques \n";
var_dump(array_keys(array_intersect($count, [1])));

https://3v4l.org/DKIbZ

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 2015-03-28
    • 2019-08-02
    • 2014-08-03
    • 2019-09-09
    • 2016-01-30
    • 1970-01-01
    相关资源
    最近更新 更多