正在尝试使用此代码在我的刀片服务器任务中不重复
我已经编辑了我的问题,所以我添加了控制器和完整的刀片代码
我的控制器
pure
我的剑灵
$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();
答案 0 :(得分:1)
您将在每次迭代中清空数组。将数组的初始化移到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
答案 1 :(得分:0)
更改此
array_push($a,"$Task->task_name");
使用
array_push($a, $Task->task_name);
// or
$a[] = $Task->task_name;
答案 2 :(得分:0)
在库存的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])));