Простой вопрос ЕСЛИ - PullRequest
       45

Простой вопрос ЕСЛИ

1 голос
/ 28 апреля 2010

Как я могу просто ниже, если заявления?

if ( isset(var1) & isset(var2) ) {

    if ( (var1 != something1) || (var2 != something2) ) {

        // ... code ...
    }

}

Похоже, что это может быть сведено только к одному оператору IF, но я не уверен, что буду использовать AND или OR

Ответы [ 8 ]

2 голосов
/ 28 апреля 2010
Boolean varsAreSets = isset(var1) & isset(var2); // or some other name that indicates what this is doing
Boolean someMeaningfulName = (var1 != something1) || (var2 != something2); // would suggest a meaningful name but don't know what this is accomplishing

if ( varsAreSets && someMeaningfulName ) { 
        // ... code ... 
} 

Это делает код очень читабельным и помогает вам и тому, кто его читает, понять, что на самом деле делают эти проверки.

1 голос
/ 28 апреля 2010

Вопрос в в каком порядке ваш компьютер интерпретирует логическую логику:

Возьмите, например, следующие условия:

A: Ложь B: Истина

если бы вы написали if (A && B), что на самом деле делает ваш компьютер, так это подумайте:

Является ли A верным?Нет.

Ну, A и B не может быть правдой, потому что A не правда.Поэтому это утверждение неверно.[компьютер игнорирует остальную логику]

Из-за этого, когда вы вычисляете оператор isset(var1) && ( (var1 != something1) || (var1 != something2) ), он сначала проверяет isset(var1), и если это неверно, то пропускает остальную часть условия,так же, как ваше двойное утверждение.

1 голос
/ 28 апреля 2010

Вы можете сделать:

if(isset(var1) && isset(var2) && ( (var1 != something1) || (var1 != something2) ) ){
    //..code
}   

В качестве общего примера:

if( cond1 && cond2 ) {
 if( cond3 || cond4) {
   // ...code..
 }
}

Код будет выполняться только тогда, когда оба значения cond1 и cond2 равны true, а либо cond3, либо cond3 равно true.

1 голос
/ 28 апреля 2010
if (isset(var1) && ((var1 != something1) || (var1 != something2)))
    // ... code ...
}

Вы бы использовали and, потому что вы можете получить только часть // ... code ..., если оба if-выражения true.

0 голосов
/ 28 апреля 2010

Я думаю, что большинство приведенных выше примеров с 1 IF могут выдать ошибку, если var1 или var2 НЕ установлены

(isset($var1) && isset($var2)) ? ($var1!='something1' && $var2!='something2') ? $go=TRUE : $go=FALSE : $go = FALSE;

if ($go){
    echo 'hello';
}
0 голосов
/ 28 апреля 2010

Другой вариант:

if (isset(var1) && isset(var2)
&& !(var1 == something1 && var2 == something2)) {
   ...
0 голосов
/ 28 апреля 2010

<code>if (isset(var1) && isset(var2) && ((var1 != something1) || (var2 != something2)))
{
  // ... code ...
}
0 голосов
/ 28 апреля 2010
if ( isset(var1) && isset(var2) && ( (var1 != something1) || (var2 != something2) ) ) {

    // ... code ...
}
...