将元素添加到foreach循环内的数组中

时间:2018-10-27 10:56:40

标签: php laravel loops for-loop foreach

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

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

我的控制器

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();

3 个答案:

答案 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])));

https://3v4l.org/DKIbZ