-1

編集:この質問をまったく役に立たないようにするために、私は主題を変えています。

contninue; のようなタイプミスがあっても PHP がエラーをスローしないのはなぜですか。エラー報告が E_STRICT に設定されている場合のコード内。

以下の元の質問を参照してください。foreach ループを続行しようとしましたが、誤って contninue; と書きました。continue; ではなく、スクリプトの実行時に、NetBeans IDE または PHP から警告もエラーも受け取りませんでした。E_STRICT と E_ALL のエラー レポート、HTML エラー、表示エラーなどがあります。PHP でのプログラミングをこれらの種類のばかげたエラーに対してより防弾にする方法はありますか? contninue という名前の変数または関数がないことに注意してください。実際、dsafdsfdafdsafdsafdsafdsa_FDA9812324398s など、ほとんど何でも行に入力できます。エラーは発生しません。


元の質問: 各ループが次のループにスキップするたびに PHP で続行しないのはなぜですか?

このような質問を投稿するのは少し恥ずかしいですが、ここに行きます...

関数のコードの一部を次に示します。特定の基準を満たす配列内の 1 つ以上の項目を除外する配列を再作成しようとしているだけです。この場合は、postId に一致します。(ご参考までに、これは Wordpress での開発です。)

私の単純な foreach ループでは、continue; コマンドはその仕事をしていないようです。少なくとも、私が使用した他の言語 (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 程度で、Windows Vista で動作する Apache です。

4

2 に答える 2

1

PHP では、continueは現在の繰り返しを終了しますが、ループは中断しません。breakはループを終了します

于 2013-11-13T02:52:39.087 に答える