PHP:在forEach中,达到条件时停止执行,但稍后继续

Posted

技术标签:

【中文标题】PHP:在forEach中,达到条件时停止执行,但稍后继续【英文标题】:PHP: In forEach, stopping execution when a condition is reached, but continuing later 【发布时间】:2013-03-26 20:58:17 【问题描述】:

假设我有这样的事情:

$count = 0; 
foreach($CourseDetails as $course_line) 
    print "<tr><td>$course_line['class_code']</td>
            <td>$course_line['class_name']</td>
            <td>$course_line['class_unit']</td>
            <td>$course_line['class_description']</td>
            <td>$course_line['class_instructors']</td>";
    $count = $count + 1
    if ($count = 10);
        $count = 0;
        // code that stops script and makes a "Continue?" button pop up on the webpage under the already outputed details
        // if the client presses the "Continue?" button, allow the script to continue (jump back into the foreach loop)

我正在尝试找到一种方法来停止脚本,然后制作一个按钮说“继续?”。如果客户端按下按钮,我希望脚本从停止的地方继续。 php是否有任何允许这样做的函数?

【问题讨论】:

数据是否来自数据库?如果我理解正确,您正在尝试实现某种“分页”功能 【参考方案1】:

简短回答:不!

这更像是一个工作流程设计问题。我建议创建一个要执行的项目列表。然后尝试执行它们(因为它们被成功处理,将它们标记为完成),如果遇到错误,则停止执行并让用户知道。如果用户希望继续,请重新加载页面,并继续执行初始列表中尚未完成的项目。

【讨论】:

javascript 中呢? Javascript 仅在浏览器端执行,在服务器端 PHP 完成执行并将页面交付给浏览器之后。要将用户输入返回给 PHP,您需要重新加载页面。或者,进一步修改您的设计,并加载您的 PHP 页面,然后执行一系列从 Javascript 到 PHP 的 AJAX 调用,并逐项执行您的列表。此时,您将能够停止在 Javascript 中执行循环并要求用户输入。【参考方案2】:

一旦页面在浏览器中加载,您将无法停止脚本。您只能在脚本内创建中断条件。页面之间“内存”的两种方式是传递一个 URL 变量,例如start=20,或者使用 $_SESSION 变量来记住最后的中断点。最好通过 URL 传递变量,以便页面可以单独访问。

然后,在您的循环中,简单地评估条目是否在最后一个中断之上有一个数字。以下假设您的课程位于具有数字索引的数组中,在这种情况下 $count 是多余的。如果您要从数据库中提取它们,请采用完全不同的方法...

$start = !empty($_GET['start']) ? $_GET['start'] : 0;
$offset = 10;

foreach($CourseDetails as $course_num => $course_line) 

    if ($course_num < $start) continue; // These were already seen.

    if ($course_num >= $start + $offset) 
        // Interrupt and make a button that links to ?start=$start+$offset.
        break;
    

    // Here display stuff.

【讨论】:

以上是关于PHP:在forEach中,达到条件时停止执行,但稍后继续的主要内容,如果未能解决你的问题,请参考以下文章

PHP“继续”停止 foreach 循环

PHP while 循环

php中在循环外部如何强制结束循环?

条件检查时如何一次停止执行if语句?

在 PHP 中满足某个条件时如何停止递归循环

嵌套的 foreach 循环使用 if 条件创建重复记录 - PHP Laravel 8