2017-05-23 12 views
0

は、$ R、$ G、$ Bの値である:すべての条件のために場合このIF文は、すべての条件が真の場合にfalseと評価されるのはなぜですか?この場合

r: 113 
g: 113 
b: 105 

/

$threshold = 10; 
if ((abs($r - $g) <= $threshold) && (abs($r - $b) <= $threshold) && (abs($g - b) <= $threshold)) 
{ 
    return TRUE; 
} 
else 
{ 
    echo "<hr/>"; 
    var_dump((abs($r - $g) <= $threshold) && (abs($r - $b) <= $threshold) && (abs($g - b) <= $threshold)); //bool(false) 
    echo abs($r - $g) . "<br />"; //0 
    echo abs($r - $b) . "<br />"; //8 
    echo abs($g - $b) . "<br />"; //8 
    echo $threshold . "<br />"; //10 
    var_dump((abs($r - $g) <= $threshold)); //bool(true) 
    var_dump((abs($r - $b) <= $threshold)); //bool(true) 
    var_dump((abs($g - $b) <= $threshold)); //bool(true) 
} 

これは出力

bool(false) 0 
8 
8 
10 
bool(true) bool(true) bool(true) 

ありますIF文はTRUEですが、なぜFALSEと評価されていますか?

+1

実際のコードの 'b'変数に' $ 'が足りないか、この質問の誤植ですか? –

+2

あなたは 'abs($ g - b)<= $ threshold'のbの前に$を忘れました – aynber

+0

@aynber - これを答えとして投稿してください。私はそれが何かばかげたことを知っていましたが、私はそれを見つけることができませんでした、余分な目のペアが必要なだけです – AllisonC

答えて

2

の前に$があります。abs($g - b) <= $thresholdには、エラー報告をオンにすると、Use of undefined constant b - assumed 'b'と表示されます。

+0

正解であるので、なぜ誰かがこれを投票したのか分かりません。 – AllisonC

+2

本当に必要な答えではないので、それはちょうどタイプミスです。 :-) – aynber

関連する問題