Более простой способ проверить, не равна ли переменная нескольким строковым значениям?
Текущие Коды:
<?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
}
?>
есть ли более простой (т. е. более короткий) способ написать два условия?
Примечание: Да, они разные,и я ожидаю, что разные способы сократить коды.
5 ответов
для вашего первого кода Вы можете использовать короткое изменение ответ
@ShankarDamodaran используя in_array()
:
if ( !in_array($some_variable, array('uk','in'), true ) ) {
- это то же, что:
if ( $some_variable !== 'uk' && $some_variable !== 'in' ) {
... но короче. Особенно, если вы сравниваете больше, чем просто " uk " и "in". Я не использую дополнительную переменную (Шанкар использовал $os) но вместо этого определите массив в операторе if. Кому-то это покажется грязным, а мне-быстрым и аккуратным. : D
проблема с ваш код, что он легко может быть заменен только так:
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;
вам нужно multi проверка значения. Попробуйте использовать следующий код :
<?php
$illstack=array(...............);
$val=array('uk','bn','in');
if(count(array_intersect($illstack,$val))===count($val)){ // all of $val is in $illstack}
?>
некоторые основные регулярные выражения сделают трюк хорошо для $some_variable !== 'uk' && $some_variable !== 'in':
if(!preg_match('/^uk|in$/', $some_variable)) {
// Do something
}