2016-04-14 27 views
3

vermiyorum ben 0 güce sahip ancak bitiş sonuçları 1 GÜN vardır bekliyorum php dize karşılaştırması beklenen sonuçlar

$duration = 0; 
if ($duration == 'daily') { 
    $duration = '+1 DAY'; 
} 

echo $duration; 

altındaki küçük kod parçacığı vardır var. Yukarıdaki koşulların neden başarılı olduğunu anlayamıyorum?

Fakat === beklenen sonuçları döndürüyoruz.

php 7 ve php 5.5 adreslerini kontrol ettik. Her iki versiyon da 0 değerini çıkış olarak veriyor.

+1

Bir çeşit hokkabazlık sorunuyla karşılaşıyorsunuz gibi görünüyor. Temel olarak, bir tam sayıya "günlük" yazmayı ve tam sayı 0'a uyan 0 almayı deniyor (http://stackoverflow.com/questions/4098104/odd-behaviour-in-a-switch-statement). Ayrıca, genel bir kural olarak, eğer bir = – GordonM

+0

Php yok 'u çıkarırsanız yanlışlıkla atayamayacağınız zeminde bir karşılaştırmanın sol tarafında değişemeyen sabit/işlev çağrısı/şeyini koymak daha iyidir. 'string' ('daily') ve 'integer '(0) değerlerini karşılaştırmayı bilmemesi için if ifadesinin her zaman doğru ve' $ duration =' +1 DAY '. –

cevap

0

Bu, tür yanlış anlaşılıyor.

kullanımı

$duration = '0'; 
if ($duration == 'daily') { 
    $duration = '+1 DAY'; 
} 

echo $duration; 

Bu sizin yanıtını gösterir.