Forskjeller mellom to strenger i en PHP-funksjon

Forskjeller mellom to strenger i en PHP-funksjon


For å sammenligne strenger i en PHP-funksjonen, kan du vanligvis bruke en enkel evaluering som "if ($ streng1 == $ streng2)." Noen ganger kan imidlertid to strenger i en PHP-funksjonen kan ha små forskjeller mellom dem --- en følge av den måte PHP behandler variabler; fordi ingen type data er lagret med variabelen, tillater PHP streng sammenligninger selv når en streng sammenligning ville være upassende og noen ganger viser merkelig oppførsel når du forsøker å se etter forskjeller mellom to strenger.

PHP Variable Typing

Programmeringsspråk, som regel, kan være enten "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 desimaltall (hvis multiplisert med en desimal, for eksempel), eller en streng (når sammenkjedet med operatøren "."), avhengig av hvordan det brukes. PHP gjør meget liten variabel kontroll, noe som er generelt 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.

String Verdier og Casting

PHP støtter bruk av støpe --- konvertere en variabel uttrykkelig fra en type til en annen --- ved å inkludere variabeltype i parentes før variabelen er initialisert. For eksempel "$ var2 = (string) $ var1" initialiserer "$ var2" som en eksplisitt streng. PHP gir også on-the-fly strengen støping av bruk av "strval ()" -funksjon: koden "$ var3 = true" skaper "$ var3" som en boolsk variabel. "Strval ($ var3)" vil behandle den samme boolsk variabel som en streng, slik som i strengsammenligninger 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) vil returnere "true", fordi som standard PHP behandler dem som tall. Dette er fortsatt til stede selv de er innpakket i strval () funksjoner: ". True" if (strval ($ var1) == strval ($ var2)) returnerer også For nøyaktig sammenligne disse to strenger i en PHP-funksjonen, bruk "===" sammenligning: if ($ var1 === $ var2) vil returnere "false".

Objekter som Strings

PHP vilje til å konvertere variabler on-the-fly kan også 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 legger i hvert inn i en variabel med PHP innebygde "SimpleXML" bibliotek, vil en sammenligning mellom de to variablene tilbake "false" selv om den strengverdien er identiske, fordi hver bærer informasjon om XML-hierarkiet og de to er teknisk annerledes fordi de var plassert i ulike deler av XML-filen. I dette tilfelle strval () vil komme til unnsetning ved å returnere bare strengen, uten den ekstra node informasjon.