2017-07-10 7 views
0

Mein Code führt immer if-Anweisung, auch wenn die Bedingung falsch ist, geht es nicht zu anderen.Else-Anweisung nicht in PHP ausgeführt

<?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

Ihre 'if' Erklärung zu bekommen, ist falsch (und Tests immer als wahr). Es sollte 'if ($ link == 8 || $ link == 10)' –

+0

Vielen Dank. Jetzt verstehe ich die Theorie dahinter. – veenu

Antwort

4

Da 10 einen "truthy" Wert ist, wird die Bedingung immer wahr sein. Sie haben grundsätzlich

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

weil 10 == true ist in der Tat wahr.

Sie sollten es auf beiden anpassen

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

oder Sie können in_array() verwenden, wenn Sie viele Werte

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

zu erhalten beginnen Wenn Sie möchten, können Sie strengen Vergleich verwenden - wenn (und nur wenn) $link ist eine ganze Zahl. Dann hätten Sie drei Gleichheiten, die den gleichen Wert und des gleichen Typs benötigen. Dies liegt daran, dass PHP schwach typisiert ist, so dass Typen standardmäßig nicht verglichen werden (und als Ergebnis können Sie verschiedene Typen vergleichen und ein gültiges Ergebnis haben). Mit dem strikten Vergleich können Sie besser steuern, welche Art von Variablen Sie vergleichen.

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

Sie benötigen zu ändern, wenn ein Teil Sie, wenn falsch

definieren
1

Die Bedingung $link == 8 || 10 gibt immer true zurück. Wenn $link nicht 8 ist, prüft es, ob 10 wahr ist. Jeder Wert ungleich Null ist wahr.

Statt:

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

Oder wenn Sie einen Wert in einer Liste zu überprüfen:

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

// diese Aussage immer wahr sein

, weil 10 ist ein Nicht-Null-Wert, der als wahr behauptet wird.

Sie diese if($link == 8 || $link == 10) tun kann diese Arbeit

Verwandte Themen