2016-05-03 148 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