sonra durum yapar &&

4 Cevap php

Ben bu if bildirimde aşağıda 2 koşulları için testler. İkincisi, bir işlev `goodToGo () yani ilk koşul zaten doğru olmadığı sürece ben onu aramak istiyorum

$value = 2239;

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

function goodToGo($value){
   $ret = //some processing of the value
   return $ret; 
}

Benim soru 2 hakkında ise koşullar $value < 2000 && goodToGo($value). Ikisi de değerlendirildi olsun yoksa ikinci bir tek ilki doğru olduğunda değerlendirilir olsun demek?

Diğer bir deyişle, bloklar 2 aynı şunlardır?

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

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

4 Cevap

Hayır - İkinci koşul, her zaman (sizin örnek eşdeğerdir kılan) yürütülmez.

PHP'nin &&, ||, and, ve or operatörleri "kısa devre" operatörleri olarak uygulanır. En kısa sürede bir durum sonraki koşullarının genel koşullu, değerlendirme durur için sonuç zorlar bulunmuştur gibi.

Dan 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());

Evet. Iki blok aynıdır. PHP, (bütün değil) çoğu gibi diller, kullanımları short-circuit evaluation için && ve ||.

Iki blok aynı ARE.

PHP logical operators are "lazy", they are evaluated only if they are needed. The following code prints "Hello, world!":

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

Diğer mantıksal operatörler && içerir, ve, veya.

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

popüler bir deyim olduğunu.

eğer ikinci durum sadece kontrol edilecek ve ilk yalnızca doğruysa, bu nedenle her iki ifade eşdeğerdir.