-1

编辑:为了使这个问题不完全没用,我正在改变主题。

为什么当你有 contninue 之类的错字时 PHP 不会抛出错误;在错误报告设置为 E_STRICT 时的代码中。

请参阅我下面的原始问题。我试图继续一个foreach循环,但不小心写了继续;而不是继续;但是在运行脚本时,我没有收到来自 NetBeans IDE 或 PHP 的警告或错误。我有 E_STRICT 和 E_ALL 错误报告,HTML 错误,显示错误等。有没有办法让 PHP 编程更能抵御这些愚蠢的错误?请注意,没有名为 contninue 的变量或函数。事实上,我可以在一行中输入几乎任何内容,包括 dsafdsfdafdsafdsafdsafdsa_FDA9812324398s;它不会抛出错误。


原始问题: 为什么 PHP 中的每个循环不继续跳到下一个循环?

发布这样的问题有点尴尬,但这里......

这是一个函数的一小段代码。我只是试图重新创建一个数组,过滤掉数组中满足特定条件的一个或多个项目,在这种情况下匹配一个 postId。(如果您想知道,这是 Wordpress 中的开发。)

在我简单的 foreach 循环中,继续;命令似乎没有做它的工作。至少它没有表现出我对我使用过的任何其他语言(C、C#、MEL、Javascript 等)的期望。回显的输出总是包括“应该退出但它没有!” 即使在继续之后;并且永远不应该被执行。此外,即使 "REMOVED" ,结果数组也始终包含过滤后的内容。$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 上运行。

4

2 回答 2

2

我刚刚在这里尝试了您的代码: 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");
}

有用

于 2013-11-13T02:59:58.567 回答
1

在 PHP 中,continue结束当前迭代但不会中断循环。break将结束循环

于 2013-11-13T02:52:39.087 回答