2017-07-10 12 views
0

私のコードは常にif文を実行します。条件がfalseの場合でもelseには戻りません。Else文がPHPで実行されていない

<?php 
$link = $count; 

if ($link == 8 || 10) { 
    echo "<a href='files/".$link.".pdf'>Link</a>"; 
} else { 
    echo "Contact HES sales representative for detailed layout model"; 
} 
?> 
+0

あなた 'if'文が間違っている(そしていつものように本当のテスト)を取得するために、このif($link == 8 || $link == 10)のように行うことができます。 'if($ link == 8 || $ link == 10)' –

+0

ありがとうございます。今私はそれの背後にある理論を理解しています。 – veenu

答えて

4

10は「真実」値なので、条件は常にtrueになります。 10 == trueが、実際には、真であるので、あなたは基本的に

if($link == 8 || true) { 

を持っています。

あなたはどちらか

if ($link == 8 || $link == 10) { 

に適合させる必要があるか、あなたは多くの値

if (in_array($link, array(8, 10)) { 

したい場合は、厳密な比較を使用することができますを取得するために起動する場合は、in_array()を使用することができます - 場合(との場合のみ)$linkは整数です。次に、3つの等価があり、同じ値のが同じタイプを必要とします。これは、PHPは弱く型付けされているため、デフォルトでは型を比較しません(結果として、異なる型を比較して有効な結果を得ることができます)。厳密な比較を使用すると、比較する変数のタイプをより適切に制御できます。

if ($link === 8 || $link === 10) { 
0

あなたがもし間違っ

を定義している部分場合は、あなたを変更する必要があります
1

条件$link == 8 || 10は常にtrueを返します。 $linkが8でない場合、10が真であるかどうかをチェックします。 0以外の値がtrueの場合あなたは、リスト内の値をチェックすることを好む場合

if ($link == 8 || $link == 10) ... 

または::代わりに

if (in_array($link, [8, 10])) ... 
1
if($link == 8 || 10) 

は//このステートメントは常にtrueになります

10があるため、真であるとアサートされる非ゼロです。

あなたはこの作業

関連する問題