om strings te vergelijken in een PHP -functie , kunt u doorgaans gebruik van een eenvoudige evaluatie zoals " if ( $ tekenreeks1 == $ string2 ) . " Soms , echter , twee strings in een PHP functie kan subtiele verschillen tussen hen --- gevolg van de manier waarop PHP behandelt variabelen , omdat er geen gegevenstype wordt opgeslagen bij de variabele PHP maakt tekenreeksvergelijkingen zelfs wanneer een string vergelijking ongeschikt zou en toont soms vreemd gedrag bij een poging om te controleren voor verschillen tussen twee strings . PHP variabele Typen Programmeertalen , in de regel , kan ofwel " sterk " of " zwak " getypt worden . In een sterk getypeerde taal , variabelen hebben een expliciete type --- zoals " integer" of "string . " PHP is een zwak getypeerde taal , de variabele " $ var1 = 1,0 " kan worden behandeld als een integer , een floating - point getal ( indien vermenigvuldigd met een decimaal , bijvoorbeeld) of een string ( wanneer aaneengeschakeld met de operator " . " ) afhankelijk van hoe het wordt gebruikt . PHP doet weinig variabel controleren, wat algemeen nuttig omdat het extra flexibiliteit en neemt de noodzaak voor het gieten . Aan de andere kant , in bepaalde omstandigheden , kan dit onverwachte gedrag in uw programmering veroorzaken . String Values en Casting PHP ondersteunt het gebruik van casting --- omzetten een variabele uitdrukkelijk van het ene type naar het andere --- met inbegrip van het type variabele tussen haakjes vóór de variabele is geïnitialiseerd . Bijvoorbeeld , " $ var2 = (string ) $ var1 " initialiseert " $ var2 ' als een expliciete string. PHP maakt het ook on-the - fly snaar gieten door gebruik te maken van de " strval ( ) " functie : de code " $ var3 = true " creëert " $ var3 " als een Booleaanse variabele . " strval ( $ var3 ) " zal soms behandelen diezelfde Boolean variabele als een tekenreeks , zoals in string vergelijkingen of substring operaties . String Vergelijkingen , zwakke typering PHP 's kan een probleem worden . Neem bijvoorbeeld het geval van " $ var1 = 1.0 ; $ var2 = 1 ; . " Een PHP vergelijking tussen de twee behandelt ze als gelijk : if ( $ var1 == $ var2 ) zal terugkeren " true , " want standaard PHP behandelt ze als getallen . Dit blijft waar zelfs zij zijn verpakt in strval ( ) functies : if ( strval ( $ var1 ) == strval ( $ var2 ) ) zal ook terugkeren " waar. " Om deze twee snaren nauwkeurig te vergelijken in een PHP functie , gebruik de " === " vergelijking : if ( $ var1 === $ var2 ) zal " vals . " Terug Objecten als Strings < br > PHP bereidheid om variabelen on-the - fly te converteren kan ook problemen veroorzaken bij het gebruik van objecten . Neem bijvoorbeeld een XML-document dat dezelfde snaar ( bijvoorbeeld een naam zoals " John Doe " ) op twee plaatsen bevat . Als je telkens wordt geladen in een variabele met PHP de ingebouwde " simplexml " library , zal een vergelijking tussen de twee variabelen "valse " , hoewel de string waarde is identiek terugkeren , omdat elk draagt informatie over de XML- hiërarchie en de twee zijn technisch verschillend omdat ze zich in verschillende delen van het XML -bestand . In dit geval zal strval ( ) te hulp te komen door terug te keren alleen de string , zonder de bijkomende knooppunt informatie .
|