php在if语句中执行isset而没有分组语句

时间:2017-03-23 13:38:52

标签: php arrays if-statement isset array-key

我有这个if语句

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

但我无法100%确定$array[$key]存在。 所以我想做这样的事情:

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

当数组键不存在或与变量不同时,应运行if语句。 当然,我可以这样做:

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

但我想避免这种情况,因为它会降低代码的可读性。除了这个之外还有其他选择:

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

2 个答案:

答案 0 :(得分:2)

以下代码可能有所帮助:

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

答案 1 :(得分: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
        }
    }
}