Hiçbir tırnak PHP dizge karşılaştırma

6 Cevap php

Ben PHP ile ilgili bildiklerini, aşağıdaki sözdizimi not yasaldır:

if ($s == Yes)

: Yerine olarak yazılmalıdır

if ($s == 'Yes')

Ancak, ilk örnek gayet güzel çalışıyor. Herkes neden biliyor musun?

6 Cevap

Normalde, bu bir sabit olarak yorumlanır, ancak PHP bu isimde bir sabit bulamazsanız, o zaman tırnak olmamasına rağmen bu değişmez bir dize olarak varsayar. Bu (hata raporlama düzeyine bağlı olarak görünür olmayabilir,) bir E_NOTICE mesajı üretecektir; gibi bir şey:

Uyarı: tanımlanmamış bir sabit kullanılması Evet - 3. hatta script.php 'evet' üstlendi

Temelde, PHP sadece aşırı hoşgörülü olduğunu.

Tırnak yokmuş gibi Kısacası, PHP davranmaktadır.

PHP ayrılmış bir belirteç olarak bir şey tanımıyor, bu bir dize olarak değerlendirir.

Hata günlüğü bu konuda bir uyarı gösterecektir.

İlki bir dize değil.

Ve gayet iyi çalışıyor değil:

error_reporting(E_ALL);
if ($s == Yes) {}

PHP sadece bir "Pretty ana sayfa" formu yorumlayıcı ve kesinlikle günümüzde cesareti vardı zamanlardan bir miras.

Her iki bildirimleri gösteren error_reporting olması gerekir, ve display_errors ayarlanır.

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', '1');

if ($s == Yes) {
  // foo
}

PHP Evet bir sabiti olarak tedavi olacağını. Sabit tanımlanmamış ise bu dizeyi 'Evet' demek üstlenecek. Onları açık varsa bir bildirim oluşturmak gerekir.

Sabit Evet tanımlı uğramadığı tespit edildiğinde PHP dahili 'Evet' Evet dönüştürür.

Ne istediğinizi karşılaştırarak ise $ s değeri bir bir dize olarak "Evet" ise BTW .. o zaman var

a) use strcmp or b) use the identity operator "==="