2016-04-10 21 views
0

所以我有這樣的代碼:突破到別的PHP

if (isset($_GET['code'])) { 
    $code = $_GET['code']; 
    if (!array_key_exists($code, $errors)) { 
     break 2; // Move to else to do other stuff 
    } 
    // Do stuff 
} else { 
    // Do other stuff 
} 

但我不能得到休息的時候做我想做的事情? 我剛剛得到一個錯誤:

Fatal error: Cannot break/continue 2 levels in {filepath}\index.php on line 161 // Line of the !array_key_exists

那麼,怎樣才能我得到的,如果突破,並移動到別的嗎?

回答

3

這是因爲break中斷循環像forwhile ...它不會打破if ...

不能移動從ifelseif ;-)

使它像這樣:

編輯點評友好的用戶後 修正錯誤與$code在未分配尚未if

if (isset($_GET['code']) && array_key_exists($_GET['code'], $errors)) { 
    $code = $_GET['code']; 
    // Do stuff 
} else { 
    do_other_stuff(); 
} 
+1

它會顯示一個錯誤。因爲'$ code'已經被初始化爲''block',但是你已經在這裏使用了'array_key_exists($ code,$ errors)'...... –

+0

@ 73badf2bb626675fdd519011cbb39e你是完全正確的!編輯。 –

2

break聲明突破了最近的附錄loopswitch聲明。

break不會突破if聲明,但最接近的loopswitch包含if語句。不違反if語句的原因是因爲它通常用於決定是否要跳出loop

嘗試這樣的:

if (isset($_GET['code']) && !array_key_exists($_GET['code'], $errors)) { 
    // Do some stuff 
else { 
    // Do other stuff 
} 
+1

他希望它存在:-)所以'array_key_exists() ',而不是'!array_key_exists()':-) –

0

嘗試:

if (isset($_GET['code']) AND !(array_key_exists($GET['code'],$errors)) { 
    $code = $_GET['code']; 
} 

elseif (isset($_GET['code']) AND $code = $_GET['code'] AND array_key_exists($code, $errors)) { 
    // Do stuff 
} 

} else { 
    // Do other stuff 
}