выполняется условие после && всегда оценивается

У меня есть это утверждение if которое проверяет два условия ниже. Второй – функция goodToGo() поэтому я хочу называть его, если первое условие уже не верно

 $value = 2239; if ($value < 2000 && goodToGo($value)){ //do stuff } function goodToGo($value){ $ret = //some processing of the value return $ret; } 

Мой вопрос касается условий 2 if $value < 2000 && goodToGo($value) . Оценивают ли они оба, или второй оценивается только тогда, когда первое верно?

Другими словами, следующие 2 блока одинаковы?

 if($value < 2000 && goodToGo($value)) { //stuff to do } if($value < 2000) { if (goodToGo($value)){ //stuff to do } } 

Related of "выполняется условие после && всегда оценивается"

Нет – второе условие не всегда будет выполняться (что делает ваши примеры эквивалентными).

PHP && , || , and , и / or операторы реализуются как операторы «короткого замыкания». Как только будет найдено условие, которое заставляет результат для общего условного условия, оценка последующих условий прекращается.

С http://www.php.net/manual/en/language.operators.logical.php

 // -------------------- // foo() will never get called as those operators are short-circuit $a = (false && foo()); $b = (true || foo()); $c = (false and foo()); $d = (true or foo()); 

Да. Два блока одинаковы. PHP, как и большинство (но не всех) языков, использует оценку короткого замыкания для && и || ,

Эти два блока одинаковы.

Логические операторы PHP «ленивы», они оцениваются только в том случае, если они необходимы. Следующий код печатает «Hello, world!»:

 <?php $a = 10; isset($a) || die ("variable \$a does not exist."); print "Hello, world!" ?> 

Другие логические операторы включают &&, и, или.

 <?php perform_action() or die ('failed to perform the action'); ?> 

является популярной идиомой.

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

Да, два кода, которые вы дали, эквивалентны. PHP имеет короткое замыкание, поэтому, когда вы используете || и &&, любое утверждение после первого оценивается только при необходимости.

Всегда связывайте свой технический язык со своим родным языком. Также здесь, если я говорю вам в устном разговоре, это точно так же: вы спрашиваете = «если я голоден» и «я ем пиццу» похожа на «Если я голоден то только я ем пиццу "? Итак, здесь вы можете видеть, что в более поздней фразе сказано, что пока я не голоден, я не ем пиццу, а первая говорит, что я очень веселый, и я ем пиццу. 🙂