【发布时间】:2013-11-13 02:50:11
【问题描述】:
编辑:为了使这个问题不完全无用,我正在改变主题。
为什么 PHP 在出现 contninue 之类的错字时不会抛出错误;在错误报告设置为 E_STRICT 时的代码中。
请参阅下面的原始问题。我试图继续一个foreach循环,但不小心写了继续;而不是继续;但是在运行脚本时,我没有收到来自 NetBeans IDE 或 PHP 的警告或错误。我有 E_STRICT 和 E_ALL 错误报告,HTML 错误,显示错误等等。有没有办法让 PHP 编程更能抵御这些愚蠢的错误?请注意,没有名为 contninue 的变量或函数。事实上,我可以在一行中输入几乎任何内容,包括 dsafdsfdafdsafdsafdsafdsa_FDA9812324398s;而且不会报错。
原问题:为什么 PHP 中的 continue 不为每个循环跳到下一个循环?
发布这样的问题有点尴尬,但这里是......
这里是一个函数的一小段 sn-p 代码。我只是试图重新创建一个数组,过滤掉数组中满足特定条件的一个或多个项目,在这种情况下匹配一个 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 上运行。
【问题讨论】:
-
错字:
contninue;也许? :) 但我想那会出现错误。 -
continue直接跳到下一个迭代 -
你使用什么样的 IDE 不会显示语法错误?!
-
@Smuuf 啊!!是的你是对的。我瞎了……叹息。我刚开始使用 NetBeans。我本来希望这样的事情会显示为错误,但事实并非如此,至少开箱即用。至少可以说是尴尬...
-
@Songo : Netbeans ......你有什么更好的推荐吗?我在看 Eclipse,但在我阅读的几次比较中发现 Netbeans 是首选。
标签: php wordpress foreach continue