Текущие коды:
<?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} ?>