For å sammenligne strenger i en PHP -funksjon , kan du vanligvis bruke en enkel evaluering som " if ( $ streng1 == $ string2 ) . " Men noen ganger kan to strenger i en PHP -funksjon har små forskjeller mellom dem --- en konsekvens av måten PHP behandler variabler , fordi ingen type data lagres med variabelen , tillater PHP streng sammenligninger selv når en streng sammenligning ville være upassende og viser noen ganger merkelig oppførsel når du forsøker å se etter forskjeller mellom to strenger . PHP Variable Typing
programmeringsspråk, som regel, kan enten være " sterkt " eller " svakt " skrevet. I et sterkt skrevet språk , variabler har en eksplisitt typen --- som " heltall " eller "streng ". PHP er et svakt skrevet språk ; variabelen " $ var1 = 1,0 " kan behandles som et heltall , et flyttall ( hvis multiplisert med en desimal , for eksempel) eller en streng (når sammenkjedet med operatøren " . ") avhengig av hvordan det brukes . PHP betyr svært lite variabel kontroll, som generelt er nyttig fordi det gir ytterligere fleksibilitet og fjerner behovet for støping . På den annen side , under visse omstendigheter , kan dette føre til uventet oppførsel i programmering ditt .
String Verdier og Casting
PHP støtter bruk av avstøpning --- konvertering en variabel uttrykkelig fra en type til en annen --- ved å inkludere variable typen i parentes før variabelen er initialisert . For eksempel , "$ var2 = ( streng) $ var1 " initialiserer " $ var2 " som en eksplisitt streng. PHP gjør også on-the -fly streng avstøpning ved bruk av " strval ( ) "-funksjonen : koden " $ var3 = true " skaper " $ var3 " som en boolsk variabel . " strval ( $ var3 )" vil behandle den samme boolsk variabel som en streng , for eksempel i streng sammenligninger eller delstreng operasjoner.
String Sammenligninger
Noen ganger , kan PHP svake typing bli et problem . For eksempel vurdere tilfelle av " $ var1 = 1.0 , $ var2 = 1; . " En PHP sammenligning mellom de to behandler dem som likeverdige : if ( $ var1 == $ var2 ) returnerer " true ", fordi som standard PHP behandler dem som tall . Dette er fortsatt til stede selv om de er pakket inn i strval ( ) funksjoner: if ( strval ( $ var1 ) == strval ( $ var2 ) ) returnerer også "true ". Å nøyaktig sammenligne disse to strenger i en PHP -funksjon , bruk " === " sammenligning: if ( $ var1 === $ var2 ) vil returnere "false ".
Objekter som Strings
PHP vilje til å konvertere variabler on-the -fly også kan føre til problemer når du bruker gjenstander . For eksempel vurdere et XML-dokument som inneholder den samme strengen (for eksempel et navn som " John Doe ") på to steder. Hvis du laster hver til en variabel med PHP har innebygd " SimpleXML " bibliotek , vil en sammenligning mellom de to variablene tilbake "false ", selv om strengen verdien er identisk , fordi hver bærer informasjon om XML hierarki og de to er teknisk forskjellige fordi de var plassert i ulike deler av XML -filen. I dette tilfellet vil strval ( ) kommer til unnsetning ved å returnere bare strengen , uten den ekstra node informasjon.