2016-06-30 10 views
0

Hallo ich richtig bin versucht ternären Operator formatiert wird mehrere Bedingungen in PHP zu verwenden:Ternary Betreiber mit mehreren Bedingungen

$result = ($var !== 1 || $var !== 2) ? '' : 'default'; 

Das Problem ist, dass in diesem Format immer wahr ich nicht einmal iv der $ var ist 1 oder 2. Mit einer Bedingung zum Beispiel $var == 0 funktioniert es gut. Jede Hilfe ist willkommen.

+3

vergleichen Sie gegen einen String? Versuchen Sie '$ var! == '1'' (mit Anführungszeichen) oder' $ var! = 1' –

+4

Wenn '$ var' gleich ist mit' 1', ist es nie gleich '2' und zurück. Willst du nicht '&&'? – FirstOne

+0

Versuch $ result = ($ var! == 1)? '': (($ var! == 2)? '': 'default') – srujana

Antwort

6

Diese Erklärung wird immer sein true:

($var !== 1 || $var !== 2) 

Da $var können beide Werte niemals gleichzeitig sein, wird es immer nicht mindestens einer der beiden Werte sein. Das genügt dem Operator ||.

Wenn Sie wissen wollen, ob $var einer der beiden Werte ist:

($var === 1 || $var === 2) 

Wenn Sie wissen wollen, ob $var ist weder der beiden Werte, können Sie die Bedingung negieren kann:

(!($var === 1 || $var === 2)) 

Oder einzeln negieren Sie die Betreiber in der Bedingung und verwenden Sie && anstelle von || (da alle Bedingungen erfüllt sein müssen, um das negative zu beweisen, in Statt nur eine Bedingung der positiven zu beweisen):

($var !== 1 && $var !== 2) 

Je nach Lesbarkeit und persönlichen Vorlieben.

+1

_ "Diese Aussage wird immer wahr sein:' ($ var! == 1 || $ var! == 2) '" _. Das gilt auch dann, wenn kein '$ var' definiert ist: [https://3v4l.org/kQHE0](https://3v4l.org/kQHE0) xD – FirstOne

1

Wenn $ var 0 ist, ist $ ergebnis "default", aber 1 und 2 geben die Bedingung ein, beide unterscheiden sich von beiden und geben immer ein.

$result = ($var !== 1 && $var !== 2) ? '' : 'default';