Çifte olmayan operatör PHP'de ne yapar ?
Örneğin:
return !! $row;
Yukarıdaki kod ne işe yarar?
Çifte olmayan operatör PHP'de ne yapar ?
Örneğin:
return !! $row;
Yukarıdaki kod ne işe yarar?
Yanıtlar:
"Çift operatör değil" değil, iki kez uygulanan operatör değil . Sağ !
, işlenenden bağımsız olarak bir boole ile sonuçlanacaktır . Sonra sol !
bu booleanı reddeder.
Bu, herhangi bir gerçek değer için (sıfır, boş olmayan dizeler ve diziler dışındaki sayılar) boolean değerini alacağınız TRUE
ve herhangi bir yanlış değer (0, 0.0 NULL
, boş dizeler veya boş diziler) alacağınız anlamına gelir. boole değeri FALSE
.
İşlevsel olarak oyuncu kadrosuna eşdeğerdir boolean
:
return (bool)$row;
!!
eşit (bool)
midir? Veya hangisinin kullanıldığına bağlı olarak farklı makine kodu çalıştırılacak mı?
!value
ve çift sayıda patlama varsa, aynı olacaktır (bool) value
.
Boole dökmekle aynı (veya neredeyse aynı - bazı köşe davaları olabilir). Eğer $row
doğruysa, o !! $row
zaman da doğrudur.
Ancak, başarmak (bool) $row
istiyorsanız, muhtemelen bunu kullanmalısınız - bazı "ilginç" ifadeleri değil;)
!!
C (++) programlama kalan bir alışkanlıktır. C'de bir döküm yapmak PHP'de olduğu kadar kolay değil, birçok farklı sorun elde edebilir, uyarıları derleyebilir, aso Böylece insanlar kullanarak koza attılar !!
.
operator!
yüklenebildiğinden, onu kullanmak C++
tehlikeli olacaktır. Ayrıca C'deki yapıları kullanamaz veya !
onlarla birlikte kullanamazsınız . Ayrıca bir şey reddedilebiliyorsa, büyük olasılıkla bunu bir boolean yapan int işlevinden döndürebilirsiniz. C hakkında konuştuğunuzdan emin misiniz?
!!
iddia ettiğiniz gibi "ilginç" bir şey değil. C'den JavaScript'e kadar her yerde.
Doğru $row
bir değere sahipse geri döner true
, aksi takdirde false
bir boole değerine dönüştürülür.
İşte php belgelerinden boole dönüşümüne örnek ifadeler.
Expression Boolean
$x = ""; FALSE
$x = null; FALSE
var $x; FALSE
$x is undefined FALSE
$x = array(); FALSE
$x = array('a', 'b'); TRUE
$x = false; FALSE
$x = true; TRUE
$x = 1; TRUE
$x = 42; TRUE
$x = 0; FALSE
$x = -1; TRUE
$x = "1"; TRUE
$x = "0"; FALSE
$x = "-1"; TRUE
$x = "php"; TRUE
$x = "true"; TRUE
$x = "false"; TRUE
"değil", birçok dilde, dilin herhangi bir ifadenin sonucuna hangi hakikat değerini verdiğini anlamak için uygun bir yoldur. Örneğin, Python'da :
>>> not not []
False
>>> not not [False]
True
Karmaşık bir değeri, "hiç bir değer var mı?" Gibi bir şeye indirgemek istediğiniz yerlerde kullanışlı olabilir.
Değil 'okumak' için daha insani, belki daha basit bir yol:
İlk '!' 2 şey yapar: değeri boole'ye dönüştürün, sonra tersini çıktılayın. Bu nedenle, değerin 'sahte' bir değer olması doğru olacaktır.
İkinci '!' sadece birincinin tersini çıkarmaktır.
Yani, temel olarak, giriş değeri herhangi bir şey olabilir, belki bir dize olabilir, ancak bir boole çıktısı istersiniz, bu yüzden ilk '!' Kullanın. Bu noktada, giriş değeri 'falsy' olduğunda TRUE istiyorsanız, burada durun ve tek bir '!' Kullanın; aksi takdirde, giriş değeri 'doğruluk' olduğunda DOĞRU istiyorsanız, başka bir '!' ekleyin.
Şuna bakalım
!$a;
Yorumlamak yerine! operatör olarak
Boolean zıt değeri onun sağında
okumak
ifadenin Boolean karşıtını sağına al
Bu durumda
$a;
bir ifade olabilir
öyle ki
!$a;
öyle de
!!$a;
ve
!!!$a;
ve böylece, bunların her biri geçerli bir ifade olduğundan,! operatör bunların her birine eklenebilir.
return (bool) $row;