簡體   English   中英

錯誤報告設置為E_STRICT時,如果代碼中有錯字,為什么PHP不會引發錯誤

[英]Why does PHP not throw an error when you have a typo in the code when error reporting is set to E_STRICT

編輯:為了使這個問題不是完全沒有用,我正在更改主題。

當您遇到類似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上運行。

我剛剛在這里嘗試了您的代碼: 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結束當前迭代,但不中斷循環。 中斷將結束循環

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM