2016-04-14 16 views
3

に与えていない私は、私は0が出力を持っていますが、最終結果は1 DAYです期待してい PHPの文字列比較が期待される結果

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

echo $duration; 

の下に小さなコードスニペットを持っています。上記の条件がなぜ成功したのか理解できません。

私は===期待した結果を返します。

php 7php 5.5にチェックインしました。両方のバージョンが出力として0を与えています。

+1

あなたは何らかの種類のジャグリングの問題に遭遇しているようです。基本的には、「毎日」を整数にキャストし、整数0に一致する0を取得しようとしています(http://stackoverflow.com/questions/4098104/odd-behaviour-in-a-switch-statement)。また、一般的なルールとして、定数/関数の呼び出し/変更することができないものは、比較の左側に= – GordonM

+0

を省略すると間違って割り当てることができない根拠に置く方が良いです。Php does not ' 'string'( 'daily')と' integer'(0)の値を比較することを知っているので、if文は常にtrueで '$ duration = '+1 DAY'になります。 –

答えて

0

これは誤解です。

使用、

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

echo $duration; 

それはあなたの答えが表示されます。

関連する問題