我已经对此进行了研究,但没有运气。
我最近访问了http://php.net/manual/en/control-structures.foreach.php并尝试在内部foreach中添加unset($var)
和reset($var)
,但两者都没有重置$ var。
关于这个的最后一个问题是大约2年前,也没有帮助我。这是链接PHP nested foreach loop iterate and set variable。
这是我的代码:
@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
部分代码)。
我的代码只跳过第一个现有用户。我预计会跳过其中的四个。
顺便说一下,我正在使用Laravel。
答案 0 :(得分:0)
break
将打破整个循环!相反,请使用continue
。这是发生了什么。当您使用break
时,如果第一个员工与第一个用户匹配,那么它将打破该循环并且不会继续接下来的4个员工!
如果您将使用{{1} ,它将只跳过那些用户的员工(真正的部分)!将continue
替换为break
并告诉我它是否有帮助!根据你的问题,这一定是它!
答案 1 :(得分:0)
阅读代码,您拥有一组员工和一组用户,并且您希望显示所有非用户的员工。第一步,我是对的吗?
如果是,请假设(-?[0-9]{1,5})\(\$(s[0-7]|t[0-9])\)
和$employees
是集合。
$users
在您看来,您可以直接遍历ghostEmployees
$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());
提高效率
由于您只需要非用户的员工,您可以直接从数据库中获取这些员工。
@foreach( $ghostEmployees as $employee )
<option value="{{ $employee->id }}">
{{ $employee->first_name }} {{ $employee->last_name }}
</option>
@endforeach
如果您仍然需要所有员工在页面中的其他位置使用,请单独购买
$ghostEmployees = Employee::whereNull('user_id')->get();