Bir php ... bir eşit işareti ile ifadesi olur?

5 Cevap

Ben bir sorunu gidermek için çalışırken, ve bildiride ise ne bu anlamak gerekir ediyorum:

if ($confirmation = $payment_modules->confirmation()) {

Ben bulabileceğiniz tüm kaynakları sadece göstermek çift eşittir işaretleri, tek değil birlikte ifadeler eğer. Bu eğer bir php kestirme biçimlerinden biridir? Ne yapıyor?

Aslında yanlış sözdizimi (Eğer bir çift eşittir işareti bunu değiştirerek sorunu gidermez. Olduğu gibi-bazı senaryolarda doğru çıkmıyor. Ben sorun değilim senaryoda, sonrasına kadar doğru dönmüyor I tarayıcıyı yenileyin.)

Herhangi bir yardım büyük beğeni topluyor!

5 Cevap

Bu tam olarak eşdeğer kestirme bir formu bulunuyor:

$confirmation = $payment_modules->confirmation();
if ($confirmation) {

}

Bu ilk $payment_modules->confirmation() $confirmation arasında bir değer atar. = operatörü $confirmation yeni değer değerlendirir.

Bu yazma gibi aynı etkiye sahiptir:

$confirmation = $payment_modules->confirmation();
if ($confirmation) {
  // this will get executed if $confirmation is not false, null, or zero
}

Atama sonra atanan değerini verir, böylece $payment_modules->confirmation() true ise $confirmation true kurulacaktır, çünkü kod çalışır atama true dönecektir. Için de aynı şey false.

Bu sizin gibi birçok değişkene atamak için bir komut kullanabilirsiniz yüzden a = b = 0. b sıfır atar ve bu sıfır döndürür. Bu nedenle, bu olur a = 0. Ve a sıfır alır ve o ya da kullanılamaz ki sıfır dönecektir.

Bazen insanlar bir atama yapmak ve sonra atama tamam geçti olmadığını kontrol etmek istiyorum. Başarısızlık false (veya eşdeğeri) döndüren işlevler ile bu çifti, ve aynı zamanda bir atama ve bir kontrol yapabilirsiniz.

Bunu anlamak için, atamaları ifade bir tür olduğunu unutmayın, ve böylece (bütün ifadeler gibi) bir geri dönüş değeri vardır. Bu dönüş değeri değişken koymak var ne olursa olsun eşittir. Eğer böyle bir şey yapabilirsiniz nedeni budur

a = b = c = 0;

aynı zamanda, bu değişkenlerin her atamak için kullanılır.

= atama (= 1 $ a), == karşılaştırma (true == false false) için olduğu anlamına gelir. Ben bunun doğru değerlendirir şey olmalıdır teyit dönüş değerine atar çünkü örnekte bu = kullanmak gerektiğini düşünüyorum.

Bir var_dump yapıyor deneyin:

var_dump( $payment_modules->confirmation() );

Bu değerlendirir ne boolean görmek ve oradan giderebilirsiniz. Daha fazla yardım istiyorsanız, daha fazla kod gönderin.

class test() {
    public function confirmation() { return true; }
}

$boolean = test::confirmation();
var_dump( $boolean );

true eşit olacaktır