Bir numara olarak PHP '0 'kullanırken ne gibi önlemler almalıyım?

7 Cevap

PHP 0 Mantıksal yanlış olarak kabul edilir. Dolayısıyla, ben bir işlev sayısal bir değer döndürmek için vardır ve ben 0 dönmek, ya da bir durumda olduğum zaman ben 0/1 olası değerlere sahip bir MySQL bool sütun varken ve ben bu gibi kodu kullanabilirsiniz:

$active=(isActive()) ? 1 : 0;
$this->db->set('isActive',$active);

Ben 0 "" null veya boş bir dize örneğin dönüştürülür olabileceği aklımın arkasında bir duygu olsun.

0 her zaman integar değil, başka bir şey olarak tedavi olması için ben almak için ne önlemler gerekiyor?

7 Cevap

0 ve '0' özel biraz tedavi edilir birkaç yer vardır. Bunun nedeni, otomatik tip ko-ercion neredeyse her zaman. Zaten 0 false değerlendirir nerede fark ettik. PHP ardından, '0' tamsayı dönüştürmek için bir neden vardır eğer öyleyse de yanlış değerlendirecek söyledi. Için dışarı izlemek için asal bir empty() fonksiyonudur. Bu MEZUNLARI, belgelenmiştir.

Ben nadiren aslında, çünkü bu çok sorunun empty() kullanın. Bu nedenle ben kullanmak isset(), is_null() ve === false ya da == 0 (veya {[(daha dar kontrol etmek çok daha mantıklı 5)]}). Diğer kontroller de vardır. Ben DB işleyici kodu var is_null() kullanarak denetler ama aynı zamanda değil sadece is_numeric().

Eğer 0 otomatik tip ko-ercion nasıl çalıştığını tamamen dikkatli olmayan diğer geliştiricinin kodunu kullanabilirsiniz nerede dikkat diğer yerlerdir. Eğer bir fonksiyon 0 vermek ama bunu kullanarak biter, bir null Bu API bir 0 o zaman muhtemelen bulduğum bir bug kullanarak gerektiğini ne zaman ve geliştirici ile yükseltmek gerekir. Aslında, muhtemelen onlar isset() ve / veya is_null() kullanarak olmalıdır empty() zaman kullanıyorsunuz. :-)

Eğer 'yanlış' == yerine her zamanki sadece 'yanlış', kullanım === olmak ile bir açıklama değerlendirmek PHP istiyorsanız

PHP belirli bir tür değişkenler döküm için izin vermiyor.

<?php

   $value = (bool) 0; 
   $value3 = (int) 3; 

?>

Her zaman 0 bir int olarak tedavi olmak istiyorsanız, tek olarak döküm.

Yoktur. 0 mantıksal değerlendirmeler onun actual değerini değiştirmez yanlış bir değer, dikkate bile, 0'dır.

Ben PHP 0 null veya "" dönüştürmek istiyorsunuz, tek bir davanın bulamıyorum. Bir dizeye dönüştürmek için varsa, bu bir mantıksal o olacak, "0" olacak false. Hayır "null" tipi, yani gerçekten 0 PHP ile güvenli var. false bir dize olarak döküm zaman "" (boş bir dizeye) dönüştürülür, ancak tamsayılar güvenli olduğunu.

Şimdi onlar başka bir şey beklendiği zaman bir tamsayı geçtiğinde üçüncü taraf kod garip davranmaya olmayacak bir garanti değil, ama çoğunlukla güvendesiniz.

0 için bir değişken ayarlamak Eğer başka bir şeye döküm sürece, değişken 0 olarak kalır. Tip hala tam sayıdır.

Eğer bir değişken is_numeric () işlevini kullanarak olup olmadığını kontrol edebilirsiniz.

Örnek:

$active=(isActive()) ? 1 : 0;
if(is_numeric($active)){
     $this->db->set('isActive',$active);
}

Veya karşılaştırma operatörü === yerine olağan == kullanabilirsiniz. Bu veri türü yanı sıra değişkenin içeriğini karşılaştırmak gerekir.

$active=(isActive()) ? 1 : 0;
if($active === 0 || $active === 1){
     $this->db->set('isActive',$active);
}

Bu yardımcı olur umarım!

Bu türleri eşit yanı sıra değerler olduğu denetler gibi === karşılaştırma operatörünü kullanarak en iyisidir. Php yaparsanız:

En iyi bahis kullanmak için doğru ve yanlış nerede yerine bayrakları için 1 ve 0 ayarlamak yerine, yapamam. Sizin örnekte yapın:

$active=(isActive()) ? true : false;

hatta daha iyi (isActive uygun bir boolean döndürür varsayarak):

$this->db->set('isActive',isActive());

yerine:

$active=(isActive()) ? 1 : 0;