Gå til innhold

[Løst] PHP mener 1000.00 < 907


Anbefalte innlegg

Hei!

Har et script som henter et tall fra en database, 907, og sammenligner det med et tall som hentes fra yahoo.finance sitt API, som varierer mellom 900 og 1000. Når dette tallet er over 907 farges bakgrunnen grønt, men om det er under det farges bakgrunnen rød (via echoene). Dette fungerer helt fint til tallet passerer, eller blir 1000.00. Hvorfor i alle dager er det slik?

if ($kjopskurs[$quote]>$dagenskurs){echo "error";} else{echo "info";}


Det er altså $kjopskurs som er 907, mens $dagenskurs varierer.

Lenke til kommentar
Videoannonse
Annonse

Problemet oppstår fordi PHP ikke har noen eksplisitt type på variabler.

Ettersom man ofte jobber med tall som kommer fra tekst, enten de er hentet fra brukerinput, en database eller en annen nettside, hender det ofte at disse variablene er lagret som tekst. Når de så skal sammenliknes må PHP prøve å finne ut om tekstene du sammenlikner inneholder noe annet som du kanskje mente å sammenlikne, for det meste fungerer dette uten problemer men hvis tekstene inneholder mer enn bare heltall kan det få uventede resultater.

 

Demo:

var_dump('907' > '1000.00 '); // bool(true)
var_dump('907' > '1000.00'); // bool(false)
  • Liker 2
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...