2017-03-23 11 views
0

ずにif文でISSETを行うPHPがグループ化された声明

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

声明場合、私はこれを持っているしかし、私は$array[$key]が存在することを100%確認することはできません。 だから私はこのような何かをしたいと思います:

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]が設定されていないためです。 – xlordt

+0

'$ something!== $ array [$ key] ??私が通知を得るので、「null」は私のために働かない: '未定義インデックス:'。 – SheperdOfFire

答えて

2

次のコードは役立つかもしれない:この1を除いて、他のオプションがあります

配列自体が存在するか、キーが存在する場合、あなたもわからない場合は、このコードは役立ちます
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 
     } 
    } 
}