我已经对此进行了研究,但运气不好。
我最近访问了http://php.net/manual/en/control-structures.foreach.php并尝试在内部foreach中添加unset($var)
和reset($var)
,但两者都没有重置$var。
关于这个问题的最后一个问题是大约2年前,也没有帮助我。这里是链接PHP嵌套Foreach循环迭代和设置变量。
这是我的密码:
@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
我的预期结果是员工选项列表(可在代码的@else
部分找到),而不包含现有用户(@if
部分代码)。
我的代码只跳过第一个现有用户。我预计其中四个会被跳过。
顺便说一下,我用的是拉威尔。
将打破整个循环!相反,使用继续
。以下是发生的事情。如果第一个员工匹配第一个用户,则使用down
时,它将中断该循环,并且不会继续下4个员工!
如果您将使用继续
,它将只跳过那些也是用户的员工(真正的部分)!替换打破
与继续
和让我知道,如果它帮助!根据你的问题,这一定是它!
阅读代码时,您有一个员工集合/数组和一个用户集合/数组,并且您希望显示所有尚未成为用户的员工。第一步,我说得对吗?
如果是,我们假设$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
提高效率
由于您只需要尚未成为用户的员工,因此可以直接从数据库中获取他们。
$ghostEmployees = Employee::whereNull('user_id')->get();
如果您仍然需要所有的员工用户在其他地方您的网页让他们分别
$employees = Employee::get():