Verschil tussen enkel aanhalingsteken en dubbel aanhalingsteken in php

Enkele aanhalingstekens en dubbele aanhalingstekens worden in PHP een beetje anders behandeld. Lees verder om de verschillen te zien in hoe ze worden geëvalueerd.

Enkele offertes

Enkele aanhalingstekens hebben de neiging om dingen in een veel letterlijke zin te ontleden. Neem bijvoorbeeld het volgende:

 $ test = "BOOOM"; echo '$ test' 

De variabelenaam wordt, wanneer deze in de enkele aanhalingstekens wordt geplaatst, niet geparseerd tot zijn werkelijke waarde. Hier is wat er feitelijk is afgedrukt vanaf het uitvoeren van dit als een eenvoudig php-programma:

 $-test 

Er zijn slechts 2 scenario's die ik kan bedenken waar informatie daadwerkelijk wordt geparseerd in een enkele geciteerde reeks. Om een ​​enkel geciteerd teken weer te geven, moet dit eerst worden voorafgegaan door een backslash. Anders wordt het geïnterpreteerd als het einde van je string. Ten tweede moet een backslash worden voorafgegaan door een ander backslack. Voorbeeld:

 echo 'enkel aanhalingsteken: \' '; echo 'backslash: \\'; 

Dubbele offertes

Dubbele aanhalingstekens hebben de neiging om dingen voor u te ontleden. Wanneer uitgevoerd tussen dubbele aanhalingstekens:

 $ test = "BOOOM"; echo "$ test" 

Het geeft de actuele variabele waarde weer:

 BOOOM 

Nu zul je af en toe een scenario tegenkomen waarbij de variabelenaam die je probeert uit te voeren, niet correct wordt geparseerd vanwege enkele omringende karakters.

 $ test = "BOOOM"; echo "$ getest"; 

Wat denk je dat hier wordt geproduceerd? Het antwoord is niets. PHP zoekt naar een variabele met de naam $ getest en omdat deze niet bestaat, wordt er niets uitgevoerd. De juiste manier om de waarde uit te voeren gevolgd door 'ed' zou zijn:

 $ test = "BOOOM"; echo "{$ test} ed"; 

Door het binnen de accolades te wikkelen, laat het PHP weten waar de variabele start en stopt, zodat het de variabele goed kan evalueren.

Snelheidsverschil

Ik heb enkele eenvoudige benchmarking-tests uitgevoerd om een ​​aantal verschilscenario's te evalueren, het verschil in snelheid tussen de 2 is te verwaarlozen. Enkele aanhalingstekens waren zo iets sneller vanwege het feit dat het niet naar een variabele hoeft te zoeken en vervolgens de waarde moet parseren, maar ik ben nog nooit een scenario tegengekomen waarbij het genoeg verschil maakte. Gebruik die welke geschikt is voor uw huidige behoeften.

Zie Ook