At sammenligne strenge i en PHP -funktion , kan du generelt bruge en simpel evaluering som " if ($ streng1 == $ streng2 ) . " Nogle gange, men kan to strenge i en PHP -funktion har subtile forskelle mellem dem --- en konsekvens af den måde PHP behandler variabler , fordi ingen form gemmes med variablen , PHP tillader string sammenligninger , selv når en streng sammenligning ville være uhensigtsmæssigt og undertiden viser mærkelig adfærd , når de forsøger at kontrollere for forskelle mellem to strenge. PHP Variable Typing
Programmeringssprog som regel , kan være enten " stærkt " eller " svagt " skrevet. I et stærkt skrevet sprog , har variable eksplicit typen --- såsom " integer " eller "streng ". PHP er et svagt skrevet sprog , variablen " $ var1 = 1.0" kan behandles som et heltal, et flydende decimaltal (hvis multipliceret med en decimal , for eksempel) eller en streng (når sammenkædede med operatøren ".") afhængigt af hvordan det bruges. PHP gør meget lidt variabel kontrol , som generelt er nyttigt, fordi det giver ekstra fleksibilitet og fjerner behovet for støbning . På den anden side , under visse omstændigheder kan dette medføre en uventet funktionsmåde i din programmering .
String Værdier og Casting
PHP understøtter brugen af støbning --- konvertere en variabel udtrykkeligt fra én type til en anden --- ved at inkludere variable type, i parentes , før variablen er initialiseret. For eksempel, " $ var2 = ( string) $ var1 " initialiserer "$ var2 " som en eksplicit streng. PHP også mulighed on- the-fly strengen støbning ved anvendelse af " strval ()" funktion: koden " $ var3 = true " skaber "$ var3 " som en boolesk variabel. " strval ( $ var3 )" vil behandle den samme Boolean variabel som en streng , som i snor sammenligninger eller substring operationer.
String Sammenligninger
Sommetider kan PHP svage skrive blive et problem. For eksempel overveje tilfælde af " $ var1 = 1,0; $ var2 = 1; ". En PHP sammenligning mellem de to behandler dem som ligeværdige : if ($ var1 == $ var2 ) vil vende tilbage "sande ", fordi som standard PHP behandler dem som tal. Dette er fortsat tilfældet, selv de er pakket ind i strval ( ) funktioner: if ( strval ( $ var1 ) == strval ( $ var2 ) ) vil også vende tilbage " sandt". Præcist at sammenligne disse to strenge i en PHP -funktion , skal du bruge " === " sammenligning : if ($ var1 === $ var2 ) vil vende tilbage "falsk ".
Objects som Strings < br >
PHP vilje til at konvertere variabler på -the-fly også kan forårsage problemer , når du bruger objekter. For eksempel overveje et XML-dokument , der indeholder den samme streng (for eksempel et navn som " John Doe " ) i to steder. Hvis du indlæser hver ind i en variabel med PHPs indbyggede " SimpleXML " bibliotek, vil en sammenligning mellem de to variabler tilbage "falsk ", selvom strengen værdi er identisk , fordi hver bærer information om XML hierarkiet og de to er teknisk anderledes fordi de var placeret i forskellige dele af XML-filen . I dette tilfælde vil strval ( ) kommer til undsætning ved at returnere kun strengen , uden de ekstra node information.