Enkele aanhalingstekens en dubbele aanhalingstekens worden een beetje anders behandeld in PHP. Lees verder om de verschillen te zien in hoe ze worden geëvalueerd.
Enkele citaten
Enkele aanhalingstekens hebben de neiging dingen in een veel meer letterlijke zin te parseren. Neem bijvoorbeeld het volgende:
$ test = "BOOOM"; echo '$ test'
De variabelenaam wordt binnen de enkele aanhalingstekens niet naar de werkelijke waarde geparseerd. Dit is wat er eigenlijk wordt afgedrukt bij het uitvoeren van dit als een eenvoudig php-programma:
$-test
Er zijn slechts 2 scenario's die ik kan bedenken waar informatie daadwerkelijk wordt ontleed binnen een enkele aanhalingstekenreeks. Om een enkel aanhalingsteken weer te geven, moet dit eerst worden voorafgegaan door een backslash. Anders wordt het geïnterpreteerd als het einde van je string. Ten tweede, om een backslash weer te geven, moet deze worden voorafgegaan door een andere backslack. Voorbeeld:
echo 'single quote: \' '; echo 'backslash: \\';
Dubbele aanhalingstekens
Dubbele aanhalingstekens hebben de neiging dingen voor u te ontleden. Indien uitgevoerd tussen dubbele aanhalingstekens:
$ test = "BOOOM"; echo "$ test"
Het geeft de actuele variabele waarde weer:
BOOOM
Nu komt u af en toe een scenario tegen waarbij de variabelenaam die u probeert uit te voeren, wordt veroorzaakt omdat deze niet correct wordt ontleed vanwege enkele omringende tekens.
$ test = "BOOOM"; echo "$ getest";
Wat denk je dat hier uitvoer krijgt? 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' is:
$ test = "BOOOM"; echo "{$ test} ed";
Door het tussen de accolades te plaatsen, laat het PHP weten waar de variabele begint en stopt, waardoor het de variabele goed kan evalueren.
Snelheidsverschil
Ik heb een paar eenvoudige benchmarking-tests uitgevoerd om enkele 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 hoeft te zoeken naar een variabele en vervolgens de waarde te parseren, maar ik ben nog nooit een scenario tegengekomen waarin het genoeg verschil maakte om ertoe te doen. Gebruik wat past bij uw huidige behoeften.