2017-03-23 1 views
0

Ich habe diese Aussage, wennphp ausführen isset in if-Anweisung ohne gruppiert Aussage

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

Aber ich kann nicht zu 100% sicher sein, dass $array[$key] existiert. So würde Ich mag so etwas tun:

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

Die if-Anweisung ausgeführt werden soll, wenn der Array-Schlüssel nicht oder oder aus den Variablen unterschiedlich existiert. Natürlich könnte ich so etwas tun:

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

Aber ich mag dies zu vermeiden, da es den Code weniger lesbar macht. Gibt es noch andere Optionen außer dieser:

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

also warum genau '$ etwas! == $ array [$ key] ?? null' funktioniert nicht für dich? –

+0

@AlexBlex, wahrscheinlich wegen "Notice: Undefined offset:" wenn $ array [$ key] nicht gesetzt ist. – xlordt

+0

Das '$ something! = $ Array [$ key] ?? null 'funktioniert nicht für mich, weil ich einen Hinweis bekomme: 'Undefinierter Index:'. – SheperdOfFire

Antwort

2

folgenden Code helfen könnten:

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

Dieser Code wird Ihnen helfen, wenn Sie nicht einmal sicher sind, ob das Array selbst vorhanden ist oder der Schlüssel vorhanden ist. Ich habe dies für einen speziellen Fall gemacht, obwohl OP nicht das obere Niveau haben möchte, das ich teile, für den Fall, dass jemand in Zukunft davon profitieren wird.

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 
     } 
    } 
}