2016-03-04 71 views
-3

我有一個數組$arr這樣的:如何檢查交換機中的isset?

array(2) { 
["name"]=> 
string(3) "Foo" 
["email"]=> 
string(13) "[email protected]" 
} 

我要檢查,如果name, email, password字段isset或沒有,所以我這樣做:

if(!isset($arr)) 
    { 
     switch($arr) 
     { 
      case isset($user['name']): 
       http_response_code(400); 
       return echo "name missing"; 
       break; 
      case isset($user['password']): 
       http_response_code(400); 
       return echo "password missing"; 
       break; 
      case isset($user['email']): 
       http_response_code(400); 
       return echo "email missing"; 
       break; 
     } 
    } 

但這些代碼不會以任何下降開關櫃,以及如何看到我錯過了字段password我做錯了什麼?

+1

我不會使用像這樣的開關,而是使用'if()'子句。 – Epodax

+0

我已經注意到這個問題已經被投了幾次,​​但我不覺得在這種情況下投票是合適的。從我所看到的這個問題適用於SO Q&A模型,顯示瞭解決手頭問題的真正嘗試,所呈現的代碼清晰簡潔,OP所遵循的內容非常清晰。僅僅因爲代碼沒有遵循最佳實踐並且由於PHP本地邏輯功能的不正確使用而無法正常工作並不意味着它應該被拒絕投票,請考慮添加評論以幫助OP瞭解爲什麼投票已完成。 –

+0

@PlanetScaleNetworks我不知道爲什麼,但最近在StackOverflow上,我無法再提出任何問題,用戶在否定判斷中進行評估。也許有人在這裏玩得開心。但我不是那些真誠導入的人的類型。 – Dillinger

回答

0

以開關語句開頭的目的是爲了運行相同的算法並根據結果進行切換。你需要的是一系列if語句。您的代碼可以改寫這樣的...

if(isset($arr)) { 
    if(!isset($arr['name'])) { 
     http_response_code(400); 
     echo "name missing"; 
    } 
    if(!isset($arr['password'])) { 
     http_response_code(400); 
     echo "password missing"; 
    } 
    if(!isset($arr['email'])) { 
     http_response_code(400); 
     echo "email missing"; 
    } 
} 

另外,你不應該在同一個語句中使用returnecho。返回將結果傳遞回來並在類方法或函數內使用,並將傳遞給它的值作爲方法或函數echo的結果返回給瀏覽器。爲了簡單起見,我在這裏使用了echo。