Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-内部foreach未重置_Php_Laravel_Foreach - Fatal编程技术网

php-内部foreach未重置

php-内部foreach未重置,php,laravel,foreach,Php,Laravel,Foreach,我已经对此进行了研究,但运气不好 我最近访问并尝试在内部foreach中添加unset($var)和reset($var),但两者都没有重置$var 关于这一点的最后一个问题是大约两年前提出的,对我也没有帮助。这里是链接 这是我的密码: @foreach($employees as $employee) @foreach($Users as $user) @if($employee->id == $user->user_id) @bre

我已经对此进行了研究,但运气不好

我最近访问并尝试在内部foreach中添加
unset($var)
reset($var)
,但两者都没有重置$var

关于这一点的最后一个问题是大约两年前提出的,对我也没有帮助。这里是链接

这是我的密码:

@foreach($employees as $employee)
    @foreach($Users as $user)
        @if($employee->id == $user->user_id)
            @break
        @else
            <option value="{{ $employee->id }}" branch="{{ $employee->branch }}" department="{{ $employee->department }}">{{ $employee->first_name }} {{ $employee->last_name }}</option>
            @break
        @endif
    @endforeach
@endforeach
@foreach($employees作为$employee)
@foreach($Users作为$user)
@如果($employee->id==$user->user\u id)
@中断
@否则
{{$employee->first_name}{{{$employee->last_name}
@中断
@恩迪夫
@endforeach
@endforeach
我的预期结果是员工选项列表(可在代码的
@else
部分找到),而不包含现有用户(
@if
部分代码)

我的代码只跳过第一个现有用户。我预计其中四个会被跳过


顺便说一句,我正在使用Laravel。

break
将打破整个循环!相反,请使用
继续
。下面是发生的情况。当您使用
break
时,如果第一个员工与第一个用户匹配,它将中断该循环,并且不会在接下来的4个员工中继续

如果您要使用
继续
,它将只跳过那些也是用户的员工(真正的部分)!将
break
替换为
continue
,如果有帮助,请告诉我!根据你的问题,这一定是它

阅读代码时,您有一个员工集合/数组和一个用户集合/数组,并且您希望显示所有尚未成为用户的员工。第一步,我说得对吗

如果是,我们假设
$employees
$users
是集合

$employees = Employee::get();
$users = User::get();

//Get all employees IDs
$ids = $users->pluck('id');

//Get all employees that are NOT users
$ghostEmployees = $employees->whereNotIn('user_id', $ids->all());
在您看来,您可以直接通过Ghostemployes循环

@foreach( $ghostEmployees as $employee ) 
    <option value="{{ $employee->id }}">
        {{ $employee->first_name }} {{ $employee->last_name }}
    </option>
@endforeach
如果您仍然需要所有员工在页面的其他地方使用,请分别获取他们

$employees = Employee::get():

你能解释清楚你想做什么吗?已经使用了
continue
先生,但这不是我想做的。如果我错了,请纠正我,在我的当前代码中,
break
语句将停止内部foreach,并将外部foreach的指针移动到下一项。当我将第一个
中断
更改为
继续
时,所有员工都将添加到
选项
元素中。请尝试使用条件
$employee->id!=$用户->用户id
并删除其他部分以及
中断
。看看会发生什么……我想要实现的是只让尚未在系统中注册为用户的员工注册。这就是为什么我要遍历它们(第一个foreach)并将它们与数据库中已经列出的(第二个foreach)进行比较。然后使用@Amr Aly给出的答案。它会成功的!感谢您深入了解如何直接在数据库中获取它们。我最终会这么做的。但是为什么我现在的代码不能正常工作呢?如果我错了,请纠正我,我看到的
嵌套foreach
是当内部
foreach
满足一定条件时,以及当返回到父
foreach
时。其父级
foreach
将移动其当前指针,并再次运行子级
foreach
,并重置其参数。
$employees = Employee::get():