Den senaste tiden har jag diskuterat med mina kollegor om det vanligaste PHP-felet att se upp med. Vi är överens om ett av de mest irriterande, ett glömt likamed tecken i en if-sats.
När man jämför två värden i PHP kan man använda dubba lika-med tecken, så här:
1 2 3 | if ($mittnamn == 'Mattias') { echo 'Hello Mattias'; } |
När man tilldelar värden till variabler används ett lika-med tecken:
1 | $mittnamn = 'Mattias'; |
Tänk dig då vad som händer med den här koden:
1 2 3 | if ($mittnamn = 'Mattias') { echo 'Hello Mattias'; } |
Den jämför inte värden, den testar om det går att tilldela $mittnamn värdet ‘Mattias’. If-satsen som var till för kontrollera om variabeln $mittnamn har värdet ‘Mattias’ kommer nu alltid vara sant. Även om $mittnamn innehåller namnet ‘Vera’ kommer ‘Hello Mattias’ skrivas ut.
Eftersom det är fullt möjligt att använda en if-sats på båda visen genereras inget felmeddelande. Och är man lite trött och stirrat sig blind på samma skript länge kan det vara väldigt svårt att hitta.

