Att jämföra strängar i en PHP-funktionen , kan du använda i allmänhet en enkel utvärdering som " if ( $ sträng1 == $ sträng2 ) . " Men ibland kan två strängar i ett PHP-funktionen har subtila skillnader mellan dem --- en konsekvens av hur PHP behandlar variabler , eftersom ingen typ lagras med variabeln , tillåter PHP strängjämförelser även när en sträng jämförelse skulle vara olämpligt och ibland visar udda beteende när man försöker kontrollera för skillnader mellan två strängar . PHP Variabla Typing
programmeringsspråk, som regel, kan vara antingen " starkt " eller " svagt " skrivs. I ett starkt skrivit språk , variabler har en explicit typ --- som " heltal " eller " sträng ". PHP är ett svagt skrivit språk , variabeln " $ var1 = 1.0 " kan behandlas som ett heltal , ett flyttal (om multiplicerat med en decimal , till exempel) eller en sträng ( när sammanfogas med operatören " . " ) beroende på hur den används . PHP gör mycket lite rörlig kontroll , som i allmänhet är användbart eftersom det ger extra flexibilitet och undanröjer behovet av gjutning . Å andra sidan , under vissa omständigheter , kan detta leda till oväntade saker i din planering .
Strängvärden och gjutning
PHP
stöder användning av gjutning --- konvertera en variabel uttryckligen från en typ till en annan --- genom att inkludera variabeln typ inom parentes före variabel initieras . Till exempel , " $ var2 = ( string ) $ var1 " initierar " $ var2 " som en explicit sträng . PHP ger även on-the -fly strängen gjutning genom användning av " STRVAL ( ) " -funktion : koden " $ var3 = true " skapar " $ var3 " som en boolesk variabel . " STRVAL ( $ var3 ) " kommer att behandla samma boolesk variabel som en sträng , t.ex. i strängjämförelser eller operationer delsträng .
strängjämförelser
Ibland , kan PHP : s svaga typning bli ett problem . Till exempel , betrakta fallet med " $ var1 = 1,0 ; $ var2 = 1 ; . " En PHP jämförelse mellan de båda behandlar dem som lika : if ( $ var1 == $ var2 ) returnerar "true ", eftersom som standard PHP behandlar dem som siffror . Detta förblir sant även de är förpackade i STRVAL ( ) funktioner: if ( STRVAL ( $ var1 ) == STRVAL ( $ var2 ) ) kommer också tillbaka " true ". För att kunna jämföra dessa två strängar i ett PHP-funktionen , använd " === " comparison : if ( $ var1 === $ var2 ) kommer tillbaka " falskt . "
Objekt som Strings
PHP vilja att omvandla variabler på - the-fly också kan orsaka problem när du använder objekt . Till exempel anser en XML-dokument som innehåller samma sträng ( till exempel , ett namn som " John Doe " ) på två ställen . Om du laddar varje del i en variabel med PHP : s inbyggda " SimpleXML " bibliotek , kommer en jämförelse mellan de två variablerna returnerar " false " även om strängen värdet är identiska , eftersom varje bär information om XML hierarkin och de två är tekniskt annorlunda eftersom de är belägna i olika delar av XML -filen . I detta fall kommer STRVAL ( ) komma till undsättning genom att returnera endast strängen , utan ytterligare nodinformationen .