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中,达到条件时停止执行,但稍后继续的主要内容,如果未能解决你的问题,请参考以下文章