Php, 0 boş olarak tedavi edilir?

8 Cevap php

Kod daha açıklayacağız:

$var = 0;

if (!empty($var)){
echo "Its not empty";
} else {
echo "Its empty";
}

Sonuç "Onun boş" döndürür. Ben zaten içeride değer değişkeni ayarlamak ve varsa boş () kontrol edecektir düşündüm. Neden "Onun boş" verir?

8 Cevap

http://php.net/empty

Aşağıdakiler boş olarak kabul edilir:

  • "" (Boş dize)
  • 0 (bir tamsayı olarak 0)
  • "0" (bir dizge olarak 0)
  • NULL
  • YANLIŞ
  • array () (boş bir dizi)
  • var $ var; (Değişken bildirilmiş, ancak bir sınıfta bir değeri olmayan)

Bu Boole bir zorlama için tam olarak aynı liste olduğunu unutmayın false. empty basitçe !isset($var) || !$var. isset yerine deneyin.

Kimse önerdi, neden ben merak ediyorum, son derece kullanışlı Type comparison table. Bu ortak işlevleri ve karşılaştırma operatörleri ile ilgili her soruyu yanıtlar.

A pasajı:

Expression      | empty()
----------------+--------
$x = "";        | true    
$x = null       | true    
var $x;         | true    
$x is undefined | true    
$x = array();   | true    
$x = false;     | true    
$x = true;      | false   
$x = 1;         | false   
$x = 42;        | false   
$x = 0;         | true    
$x = -1;        | false   
$x = "1";       | false   
$x = "0";       | true    
$x = "-1";      | false   
$x = "php";     | false   
$x = "true";    | false   
$x = "false";   | false   

Diğer cheatsheets boyunca, ben hep durumda ben emin değilim masamda bu tablonun bir basılı tutmak

From manual: Returns YANLIŞ if var has a non-empty and non-zero value.

Aşağıdakiler boş olarak kabul edilir:

  • "" (Boş dize)
  • 0 (bir tamsayı olarak 0)
  • "0" (bir dizge olarak 0) null
  • YANLIŞ array () (boş bir dizi) var
  • $var; (a variable declared, but without a value in a class)

Daha fazla: http://php.net/manual/en/function.empty.php

Dilbilimsel açıdan bakıldığında empty bir anlamı vardır without value. Diğerleri bir değişken, ne olduğunu, hangi tanımlanmış olup olmadığını kontrol etmek için isset () kullanmak zorunda olacak dedi gibi.

Aşağıdakiler boş olarak kabul edilir:

  • "" (Boş dize)
  • 0 (bir tamsayı olarak 0)
  • "0" (bir dizge olarak 0)
  • NULL
  • YANLIŞ
  • array () (boş bir dizi)
  • var $var; (a variable declared, but without a value in a class)

Dan PHP Manual

Senin durumunda $var böylece empty($var), bunu test etmeden önce sonucu inkâr edilir true dönecektir, 0, bu nedenle başka bir blok çıkışı olarak "Its empty" vererek çalışacaktır.

empty() returns true for everything that evaluates to FALSE, aslında bir 'değil' (!) kılık değiştirmiş olduğunu. Ne demek düşünüyorum isset()

Aslında sadece değişken setleri ya da eğer bu durumda not.In sizin değişken gerçekten sıfır olup olmadığını kontrol edin ya da bu örneği kullanabilirsiniz boşaltmak istiyorsanız lütfen kontrol isset:

$myVar = '';
if (empty($myVar))
{
  echo "Its empty";
}
echo "<br/>";

if ($myVar===0)
{
  echo "also zero!";
}

sadece boş fonksiyonu gibi ihbar $ myVar == 0 hareket için.

Sayısal değerler durumda is_numeric işlevini kullanmanız gerekir:

$var = 0;

if (is_numeric($var))
{
  echo "Its not empty";
} 
else 
{
    echo "Its empty";
}