Простой способ проверить, не является ли переменная не равной нескольким строковым значениям?

Текущие коды:

<?php // See the AND operator; How do I simplify/shorten this line? if( $some_variable !== 'uk' && $some_variable !== 'in' ) { // Do something } ?> 

А также:

 <?php // See the OR operator; How do I simplify/shorten this line? if( $some_variable !== 'uk' || $some_variable !== 'in' ) { // Do something else } ?> 

Существует ли более простой (то есть более короткий) способ написать два условия?

ПРИМЕЧАНИЕ. Да, они разные, и я ожидаю различные способы сократить коды.

Для вашего первого кода вы можете использовать короткое изменение ответа, данного @ShankarDamodaran, используя in_array in_array() :

 if ( !in_array($some_variable, array('uk','in'), true ) ) { 

такой же как:

 if ( $some_variable !== 'uk' && $some_variable !== 'in' ) { 

… но короче. Особенно, если вы сравниваете больше, чем просто «uk» и «in». Я не использую дополнительную переменную ( Shankar использовал $ os ), но вместо этого определял массив в выражении if. Некоторые могут обнаружить, что это грязное, я нахожу его быстрым и аккуратным: D

Проблема с вашим вторым кодом заключается в том, что его можно легко обменивать только с TRUE, поскольку:

 if (true) { 

равняется

 if ( $some_variable !== 'uk' || $some_variable !== 'in' ) { 

Вы спрашиваете, не является ли значение строки A или нет B. Если это A, это определенно не также B, и если это B, это определенно не A. И если это C или буквально что-либо еще, это также не A, а не B. Таким образом, это утверждение всегда ( не учитывая закон schrödingers здесь ) возвращает true.

Вы можете использовать in_array() в PHP.

 $os = array("uk", "us"); // You can set multiple check conditions here if (in_array("uk", $os)) //Founds a match ! { echo "Got you"; } 

Если вы планируете создавать функцию в выражении if, я бы также посоветовал использовать in_array. Это намного чище.

Если вы пытаетесь присвоить значения переменным, вы можете использовать сокращение if / else:

 $variable_to_fill = $some_variable !== 'uk' ? false : true; 

Вам нужно проверить несколько значений. Попробуйте использовать следующий код:

 <?php $illstack=array(...............); $val=array('uk','bn','in'); if(count(array_intersect($illstack,$val))===count($val)){ // all of $val is in $illstack} ?>