Nyanser ved konvertering til streng i PHP
I forrige leksjon lærte vi å legge sammen tall som strenger. Ved slik addisjon er det imidlertid nyanser, når det ikke er variabler som legges sammen, men umiddelbart tall.
Saken er at punktum ikke bare brukes for å addere strenger, men også for å skille desimaldelen fra heltallsdelen.
Hvis du setter mellomrom rundt punktumet, vil det ikke være noe problem:
<?php
echo 1 . 2; // vil skrive ut '12'
?>
Men hvis du fjerner mellomrommene rundt punktumet, får vi en desimalverdi, og ikke strengaddisjon:
<?php
echo 1.2; // vil skrive ut 1.2
?>
På grunn av slike nyanser kan man lett få en feil, hvis du setter mellomrom på den ene siden av punktumet, og ikke på den andre:
<?php
echo 1. 2; // vil gi en feil
?>
Med variabler vil det imidlertid ikke være noe slikt problem:
<?php
$a = 1;
$b = 2;
echo $a.$b; // vil skrive ut '12', og ikke en feil
?>
Forfatteren av koden ønsket å addere
tallene 3 og 4
som strenger:
<?php
echo 3.4;
?>
Koden fungerer imidlertid ikke korrekt. Rette forfatterens feil i koden.