2017-03-23 70 views
-2

這讓我難住了一段時間... 我被教過PHP中的switch語句只使用「break」關鍵字來打破switch語句的電路。 而不是使用多個if語句,爲了保持乾淨,我使用了switch語句(驗證用戶名/密碼) 這是代碼。PHP - switch語句,在任何情況下都不會中斷

代碼:

switch(true){ 

    case($passwords[$key] != $password): 
     echo "The username and/or password is incorrect<br>"; 
    case(strlen($username) < 4 || strlen($username) > 10): 
     echo "The username must be between 4-10 characters<br>"; 
    case(strlen($password) < 4): 
     echo "The password must be at least 4 characters<br>";    
    case(1>2): 
     echo $username . " " . $password . " " . strlen($username) . " " . strlen($password); 
     break; 

    default: 
     echo "Login Success<br>"; 
} 

如果我輸入: 用戶名:凱爾 密碼:foobar的

我希望只有輸出「的用戶名和/或密碼不正確
」,因爲這是隻有真實的條件... 然而,直到突破的一切似乎評估爲真,輸出一切,但默認,即使(1> 2)顯然是錯誤的...

非常感謝幫助。 謝謝!

+1

爲什麼只要使用條件就可以運行一個開關...... if {else else} { – Option

+0

一旦case被評估爲true,下面的每個語句都會被處理,直到找到break或者switch結束。 – solarc

+0

作爲一個C人 - 這是否運行沒有警告?多個案例開關將以相同的真/假值解析 –

回答

-1

每個使用的情況下塊應該以休息結束。否則,代碼將執行下一個案例等,利用所謂的「貫通」。 此功能在某些情況下可能會有用。

3

你必須在任何情況下加一休:

case($passwords[$key] != $password): 
     echo "The username and/or password is incorrect<br>"; 
     break; 
    case(strlen($username) < 4 || strlen($username) > 10): 
     echo "The username must be between 4-10 characters<br>"; 
     break; 
    case(strlen($password) < 4): 
     echo "The password must be at least 4 characters<br>"; 
     break;    
    case(1>2): 
     echo $username . " " . $password . " " . strlen($username) . " " . strlen($password); 
     break; 
+0

@kyleBlue爲什麼你不接受我的答案並接受答案更糟? – Jens

-1

如果您希望使用case聲明則每個case應包括休息。在你的示例代碼中,因爲它不是那麼冗長,所以可以通過if..else..聲明很容易地完成,並且可以接受。

相關問題