kan iemand mij vertellen wat hier niet klopt?

<?php

$weekend = FALSE;
$afstand = 15;

if ($afstand < 10 || $weekend = TRUE) {echo "fiets";}
else
{echo "auto";}

?>

hij geeft fiets terwijl de output auto zou moeten zijn.

Sander
Wat je verkeerd doet is de variabele vaan Onwaar naar waar maken.
Je moet == gebruiken.

Oftwel: is waar en moet zijn.. simpel gezegd.

<?php

$weekend = FALSE;
$afstand = 15;

if ($afstand < 10 || $weekend == TRUE) {echo "fiets";}
else
{echo "auto";}

?>
dank je wel Bart voor de snelle reactie!
Om Bart's antwoord even iets te verduidelijken:

Wanneer je wil kijken of 2 waarden het zelfde zijn gebruik je ==
Voorbeeld:
<?php
if ($false == true){}
?>

Wanneer je een variabele een waarde wil toekennen gebruik je =
Voorbeeld:
<?php
$false = FALSE;
?>
1) "$weekend == TRUE" kan ook gewoon als "$weekend"

2) Als je merkt dat je dit vaak fout doet kun je jezelf ook aanwennen om het andersom te doen: dus ipv "$count == 5" -> "5 == $count" schrijven. Als je dan een "=" te weinig schrijft staat er "5 = $count", en is geen geldige syntax = foutmelding (dit wordt ook wel "Yoda conditions" genoemd).
Je kunt dit soort problemen voorkomen met Yoda conditions.
Hierbij keer je de vergelijking om.

Dit geeft daarna direct een Parse error: syntax error, unexpected '=' in …


<?php
if (true = $weekend) {
    // ...
}
?>


En daarmee weet je dan meteen dat het dit had moeten zijn:


<?php
if (true == $weekend) {
    // ...
}
?>
Maar met die ezelsbrug doe je het sowieso altijd goed, omdat dat een poka-yoke is.

Daarnaast zouden Boolse variabelen wat mij betreft gewoon als boolean gebruikt kunnen worden. Deze zou je dus niet expliciet met true of false vergeleken moeten worden. Uitzondering is misschien het laatstgenoemde geval, omdat == false een stuk duidelijker is en leest dan een [color=#ff0000]![/color]. Geregeld doe je ook een if-else vergelijking, en in dat geval kun je de verwerking gewoon omdraaien zodat een negatie-teken geheel overbodig wordt.

Los hiervan, als het dan een Boolse variabele is, geef het dan een fatsoenlijke naam die weerspiegelt dat het een Ja-of-Nee variabele is. Als iets aan dient te geven dat het weekend is, noem dit dan $isWeekend en niet simpelweg $weekend...

Reageren