2017-03-23 85 views
0

我有這樣的if語句PHP的if語句執行isset沒有分組聲明

if ($something !== $array[$key]) { 
    // do something 
} 

但我不能100%肯定$array[$key]存在。 所以我喜歡做這樣的事情:

if ($something !== $array[$key] ?? null) { 
    // do something 
} 

如果在數組鍵不存在,或者還是從變量不同的語句應該運行。 當然,我可以做這樣的事情:

if ($something !== (isset($array[$key]) ? $array[$key] : null)) { 
    // do something 
} 

但我想避免這種情況,因爲它使代碼的可讀性。有沒有除了這個其他任何選項:

$compare = $array[$key] ?? null; 
if ($something !== $compare) { 
    // do something 
} 
+2

爲什麼'$ something!== $ array [$ key] ??空'不適合你? –

+0

@AlexBlex,如果未設置$ array [$ key],可能是因爲「Notice:Undefined offset:」。 – xlordt

+0

'$ something!== $ array [$ key] ?? null'對我不起作用,因爲我收到一條通知:'未定義的索引:'。 – SheperdOfFire

回答

2

下面的代碼可能會有所幫助:

if (!array_key_exists($key, $array) || $array[$key] !== $something) { 
    // Do it 
} 
0

此代碼將幫助,如果你甚至不知道,如果陣列本身存在或鍵存在。我爲一個特定的案例做了這個,雖然OP可能不希望我的上層分享,以防將來有人從中受益。

if (is_array($array)) // Check if this array exists 
{ 
    if (array_key_exists($key , $array)) // Check if this key exists 
    { 
     if ($something !== $compare) // Your condition 
     { 
      // do something 
     } 
    } 
}