2017-03-23 89 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 
     } 
    } 
}