我试图回复一次foreach中的内容。此时,当用户填写表单时,将显示每个跳过的记录的消息。如果跳过35条记录,由于foreach,我将收到35条消息。我想避免这种情况,并且只能为整个结果页面显示一个回声。我怎样才能做到这一点?我想我可能不得不在foreach之外做这件事,但我不知道如何把它从foreach中取出来。
foreach($allcourses as $course)
{
if(Auth::LoggedIn())
{
if(Auth::$userinfo->rank == 'Student')
{
if($course->aircraft == '1')
{
echo '<div class="msg-red">Some lessons could not be found, because you may not be entitled to view/book them at this stage of your course.</div><br/>';
continue;
}
if($course->aircraft == '2')
{
echo '<div class="msg-red">Some lessons could not be found, because you may not be entitled to view/book them at this stage of your course.</div><br/>';
continue;
}
}
}
}
答案 0 :(得分:5)
假设您必须维护该对象的结构,如果$course->aircraft == 1
,则可以进行布尔更新,然后相应地进行回显:
$found = false;
foreach($allcourses as $course)
{
if(Auth::LoggedIn())
{
if(Auth::$userinfo->rank == 'Student')
{
if($course->aircraft == '1')
{
$found = true;
}
}
}
}
if($found)
{
echo '<div class="msg-red">Some lessons could not be found, because you may not be entitled to view/book them at this stage of your course.</div><br/>';
}
答案 1 :(得分:2)
在这种情况下,您可以设置一个简单的标志变量。
$warningEmitted = false;
然后,在发出警告之前的循环中:
if(!$warningEmitted) {
// echo warning here.
$warningEmitted = true;
}
答案 2 :(得分:1)
最好的选择可能是将消息设置为变量,然后在foreach完成后回显变量。
foreach($allcourses as $course)
{
if(Auth::LoggedIn())
{
if(Auth::$userinfo->rank == 'Student')
{
if($course->aircraft == '1')
{
$message = '<div class="msg-red">Some lessons could not be found, because you may not be entitled to view/book them at this stage of your course.</div><br/>';
continue;
}
}
}
}
if(isset($message))
{
echo $message;
}
答案 3 :(得分:1)
在循环之外假定$count=1;
在循环中,你可以放一个if语句。
if($count==1) { $count++; echo "Whatever";}
希望这有帮助。
答案 4 :(得分:0)
只需使用最初设置为false的布尔变量,如果得到匹配项,则在循环中将其设置为true。
然后你可以在循环结束后检查布尔值,以决定是否需要显示消息。
答案 5 :(得分:0)
创建其他变量,您将在其中存储信息,无论消息是否已显示。显示它时,将var设置为true。
答案 6 :(得分:0)
假设我理解正确,我认为你想在发现问题后立即使用'break'来停止循环。
if (Auth::LoggedIn() && Auth::$userinfo->rank == 'Student') {
foreach ($allcourses as $course) {
if ($course->aircraft == '1') {
echo '<div class="msg-red">Some lessons could not be found, because you may not be entitled to view/book them at this stage of your course.</div><br/>';
break;
}
if ($course->aircraft == '2') {
echo '<div class="msg-red">Some lessons could not be found, because you may not be entitled to view/book them at this stage of your course.</div><br/>';
break;
}
}
}
上面我还将“if logged in”条件移到了循环之外(所以它只检查过一次)。
需要考虑的事项:
更加用户友好的方法可能是将每个错误添加到数组中 - 而不是使用echo&amp;突破 - 然后在最后循环遍历该错误数组,显示有关错误的更多信息,以便最终用户可以一次性更正它们(当然,取决于表单的工作方式)。