2016-05-03 186 views
0

編輯:檢查是否在數組存在鍵

if(array_key_exists($errcode, $Errors)){ 
    $Data['status'] = -1; 
    $Data['err'] = array(
     "err_code" => $errcode, 
     "err_str" => $Errors[$errcode] 
    ); 
} 

我有一個苛刻時間搞清楚,如果一個鍵在陣列存在,我使用array_key_exists方法已經試過,但沒有運氣!我也試過empty($ array [$ key])這似乎返回相同的通用錯誤,而不是特定的錯誤。


調用ERR(空,3)將輸出:

{ 
    "status": -1, 
    "err": { 
     "err_code": null, 
     "err_str": "Generic error" 
    } 
} 

我使用array_key_exists方法,該方法返回一個布爾值嘗試,但它似乎沒有工作,這是爲什麼?

My site should output error 5: Invalid


//Errors ENUM 
$Errors = array(
    0 => "Cannot parse <GameID>", 
    1 => "Invalid steam session", 
    2 => "Invalid <GameID>, non-numeric", 
    3 => "SQL Connection refused", 
    4 => "SQL Query error", 
    5 => "invalid <GameID>" 
); 

function err($status, $errcode){ 
    if(isset($errcode)){ 
     if($Errors[$errcode] != null){ 
      $Data['status'] = -1; 
      $Data['err'] = array(
       "err_code" => $errcode, 
       "err_str" => $Errors[$errcode] 
      ); 
     } else { 
      $Data['status'] = -1; 
      $Data['err'] = array(
       "err_code" => null, 
       "err_str" => "Generic error" 
      ); 
     } 
    } else { 
     $Data['status'] = $status; 
     $Data['err'] = array(
      "err_code" => null, 
      "err_str" => null 
     ); 
    } 
    echo(json_encode($Data, 128 | 32)); 
} 
+0

告訴我們你是怎麼嘗試使用'array_key_exists'函數的。 – lolbas

+1

'array_key_exists()'返回一個BOOL?那工作怎麼樣?它*完全*它應該返回。 –

+0

@lolbas編輯! – Robinlemon

回答

0

err功能並沒有看到全球$錯誤變量。聲明Errors變量爲global內部Err函數:

function err($status, $errcode){ 
    global $Errors; 
    if(isset($errcode)){ 
     if($Errors[$errcode] != null){ 
      $Data['status'] = -1; 
      $Data['err'] = array(
       "err_code" => $errcode, 
       "err_str" => $Errors[$errcode] 
      ); 
     } else { 
      $Data['status'] = -1; 
      $Data['err'] = array(
       "err_code" => null, 
       "err_str" => "Generic error" 
      ); 
     } 
    } else { 
     $Data['status'] = $status; 
     $Data['err'] = array(
      "err_code" => null, 
      "err_str" => null 
     ); 
    } 
    echo(json_encode($Data, 128 | 32)); 
} 
+1

爲什麼OP應該這樣做?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 Stack Overlfow特別不接受僅有代碼的答案。 –

+0

這會工作,但我想知道爲什麼解決方案不會。 – Robinlemon