编辑:为了使这个问题并非完全无用,我正在改变主题。
为什么当你有像contninue这样的拼写错误时,PHP不会抛出错误;当错误报告设置为E_STRICT时,在代码中。
请参阅我下面的原始问题。我试图继续一个 foreach 循环,但不小心写了 contninue;而不是继续;,但是在运行脚本时,我没有收到来自 NetBeans IDE 或 PHP 的警告或错误。我有E_STRICT和E_ALL错误报告,HTML错误,显示错误等。有没有办法让PHP编程对这些愚蠢的错误更加防弹?请注意,没有名为 contninue 的变量或函数。事实上,我几乎可以在一行中键入任何内容,包括dsafdsfdafdsafdsafdsafdsa_FDA9812324398s;并且它不会抛出错误。
原始问题:为什么不继续在 PHP 中每个循环跳到下一个循环?
发布这样的问题有点尴尬,但在这里......
下面是来自函数的一小段代码。我只是尝试重新创建一个数组,过滤掉数组中满足某些条件的一个或多个项目,在这种情况下匹配 postId。(这是Wordpress的发展,如果你想知道的话。
在我的简单 foreach 循环中,continue; 命令似乎没有完成它的工作。至少它的行为不符合我对我使用过的任何其他语言(C,C#,MEL,Javascript等)的期望。回显输出始终包括"应该退出但没有退出!",即使它在继续之后;并且永远不应该被执行。此外,生成的数组总是包含过滤的内容,即使"已删除"。$postId显然跑了。
$posts = get_posts( $args ); // posts is an array of objects
if($posts == null) return; // no posts
if($includeCurrentPost || $postId < 0) return $posts; // we are including all posts, so just return it
// Remove current post id from list since excluding
$newPosts = array();
$count = 0;
foreach($posts as $p) {
if($p->ID == $postId) {
echo("REMOVED " . $postId);
contninue;
echo("should have exited but it did not!");
}
$newPosts[$count++] = $p;
}
return $newPosts;
好吧,我通常用C#编程,并认为自己是一个不错的中级程序员。这没有任何意义。@_@我猜它会变成一些愚蠢的语法错误,PHP 只是让我逃脱了我看不到的东西......
PHP版本它是5.3的东西,Apache,运行在Windows Vista上。
我刚刚在这里尝试了您的代码:http://writecodeonline.com/php/
$posts = array(1,2,3,4,5);
foreach($posts as $p) {
if($p == 3) {
echo("REMOVED " . $p . "'n");
contninue;
echo("should have exited but it did not!");
}
echo("Other stuff'n");
}
它不起作用,因为 contninue
而不是 continue
,但默认情况下也没有错误(这可能意味着您没有严格的错误)。
修正拼写错误时:
$posts = array(1,2,3,4,5);
foreach($posts as $p) {
if($p == 3) {
echo("REMOVED " . $p . "'n");
continue;
echo("should have exited and it did!");
}
echo("Other stuff'n");
}
它有效
在 PHP 中,continue 结束当前迭代,但不会中断循环。 中断将结束循环