Een ietwat vreemde term die je mensen rond PHP hoort gebruiken: “concatenate”. Ik herinner me nog de eerste keer dat ik dat woord hoorde, en ik had geen flauw idee wat het betekende. Het bleek een veel voorkomende en nuttige taak in PHP: voeg twee strings samen zodat we een enkele string krijgen of iets dat we naar het scherm kunnen echoën.
Vandaag zullen we alle belangrijke gebieden van PHP string concatenation behandelen: hoe het te doen, waarom je het zult doen, wat de PHP concatenation operator is, en een beetje van de nadelen van het te veel doen van PHP string concatenation.
Onderken String Concatenation in PHP: Voeg twee strings samen
We gebruiken “string concatenation” om reeksen tekens samen te voegen in PHP
Zo bouwen we veel HTML in PHP. En zelfs als we dat niet doen, verwerken we vaak tekst. Om die redenen willen we vaak twee verschillende goed, string
s samenbrengen. (Daarmee bedoel ik het specifieke datatype, een string, in tegenstelling tot integer
of andere.)
Dus gebruiken we in PHP “string concatenation” om dingen samen te voegen. We kunnen het gebruiken om een getal in een string te stoppen, of nog gebruikelijker we stoppen de string samen met een andere of andere string.
De PHP concatenation operator: .
De PHP string aaneenschakelingsoperator is een punt.
.
.
Als u in een andere taal hebt geprogrammeerd, hebt u wellicht ervaring met het gebruik van het symbool +
(plus) om twee (of meer) tekenreeksen samen te voegen. Dat is bijvoorbeeld hoe JavaScript string aaneenschakeling werkt. In PHP gebruiken we in plaats daarvan het .
(punt, of decimaalteken) teken om tekenreeksen aan elkaar te plakken. Dus als je de punt, .
, aan twee verschillende geciteerde strings, of een variabele en string, of variabele en variabele, het resultaat zal een enkele string die PHP zal ofwel klaar om de uitvoer (met echo
bijvoorbeeld) of verdere verwerking van te doen.
Van wat je in het Engels gewend bent, lijkt het misschien vreemd dat de aaneenschakelingsoperator in PHP een .
is. Maar ik beloof je dat als je eenmaal weet wat er gebeurt, je eraan went en het vrij naadloos leest.
Hoe aaneenschakelen van reeksen in PHP
Goed, tijd om concreet te worden. Hier is wat code die laat zien hoe een PHP concat er in de praktijk uitziet. Hier zijn drie verschillende manieren waarop we echo
de string “Hello World” in PHP kunnen samenvoegen:
echo "Hello World"; // outputs "Hello World"$hello = 'Hello';echo $hello.' World'; // outputs "Hello World"$world = 'World';$hello_world = $hello.' '.$world;echo $hello_world; // outputs "Hello World"
De bovenstaande code is onnozel: de tweede twee voorbeelden zijn nodeloos ingewikkeld. Maar we houden ze eenvoudig, zodat we vertrouwd kunnen raken met de betrokken concepten.
De allereerste regel van ons codevoorbeeld is slechts een voorbeeld van een zeer alledaags gebruik van echo
in PHP om een string te tonen. U doet dit wanneer u tekst uit “PHP-land” wilt laten verschijnen in de HTML van uw pagina’s. We weten dat de reeks "Hello World"
een “string” is omdat hij wordt begrensd door dubbele (of enkele) aanhalingstekens.
Ons volgende blok definieert eerst één string, eenvoudig het woord Hello
en voegt er dan de string World
aan toe voordat hij ze naar de uitvoer echoot. In PHP is het appen van string naar string super gebruikelijk. We doen het om ons toe te laten een deel van de reeks verder weg te definiëren van waar we ze willen weergeven. (Vaak veel verder weg dan in dit voorbeeld.)
Ten slotte creëert ons laatste blok twee nieuwe variabelen: het woord World
en vervolgens de zin Hello World
als een enkele string. Dit laatste geeft ons dus een voorbeeld van PHP dat strings samenvoegt met een scheidingsteken. In ons geval is het scheidingsteken gewoon een spatie. Een fout die ik vaak maak in PHP code is het vergeten van de spatie, maar het is een gemakkelijke fout om te herstellen. Voeg gewoon een extra string met een spatie toe (of een spatie aan een andere string, als je dat liever hebt).
Combining Your PHP Powers: Append Strings AND Variables
In de bovenstaande code zagen we duidelijke voorbeelden van PHP string concatenation. Maar we kunnen PHP gebruiken om andere soorten variabelen te combineren met strings, binnen grenzen. Die grenzen: we kunnen geen aaneenschakeling doen met complexe datatypes zoals objecten of arrays in strings zonder extra werk.
Maar “eenvoudiger” PHP datatypes zoals integers en floats (generiek, getallen) zie je super vaak aaneengeschakeld in PHP. Dat ziet er dan ongeveer zo uit:
$percentage = 12.1 + 9 + 41.21;echo 'Your final score: '.$percentage.' out of 100%.'; // outputs "Your final score: 62.31 out of 100%."$integer = 1 + 17;echo $integer.' centimeters in length'; // outputs "18 centimeters in length"
In beide voorbeelden zetten we het getal (een float
in het eerste geval, een integer
in het tweede) direct in de string via concatenation. Omdat PHP het “type jongleren” voor ons zal doen om van dat getal een string te maken, kunnen we dit snel en gemakkelijk doen. In PHP is het toevoegen aan strings met concatenatie eenvoudig voor basistypes met voor de hand liggende string-versies.
PHP String Interpolatie? Single or Double Quotes gebruiken?
Dus een ding dat ik zelden gebruik, maar heel goed is om te begrijpen is PHP string interpolatie. Wat ik bedoel (net als de meeste mensen die het zeggen) met “string interpolation” is dat je een $variable
embed in een string in PHP, en het wordt onmiddellijk vervangen door de onderliggende waarde van de $variable
. Dat zou er dus ongeveer zo uitzien:
$number = 4;echo "She has $number cars in her garage."; // outputs "She has 4 cars in her garage."echo "She has {$number} cars in her garage."; // outputs "She has 4 cars in her garage."
Een paar belangrijke dingen over het bovenstaande. Ten eerste: beide echo
statements zullen leiden tot de output van “Ze heeft 4 auto’s in haar garage.” Ten tweede: we weten dus dat de wikkelende {}
niet tonen. Ten derde is het cruciaal dat beide bovenstaande statements en strings dubbele aanhalingstekens gebruiken: "
en niet single-quotes '
. In PHP moet je het open- en sluitcitaat karakter voor je strings overeenkomen.
Daarnaast mag je, wanneer je dubbele aanhalingstekens gebruikt, de PHP engine toestaan de variabele erin te interpoleren. Dus we zouden hetzelfde kunnen bereiken met alleen enkele aanhalingstekens als we:
$number = 4;echo 'She has '.$number.' cars in her garage.'; // outputs "She has 4 cars in her garage."
Hier gebruiken we weer de PHP concatenate operator, .
, in plaats van te vertrouwen op PHP string interpolatie. Er zit goed-en-slecht in deze beide opties. En alle drie werken goed. De prestatie overhead van het gebruik van string interpolatie op double-quoted strings is klein genoeg dat ik denk dat je je er geen zorgen over hoeft te maken. Maar je zult mensen horen wijzen op het (ware) feit dat het derde voorbeeld in deze sectie (zeer marginaal) sneller is.
Een buitenbeentje: .= is een aaneenschakelingsopdracht die in PHP wordt samengesteld
Ten slotte zul je dit soms gebruikt zien worden, en het is zeer relevant voor het onderwerp. Je kunt de combinatie van een .
en een =
gebruiken als zowel een toewijzing als een aaneenschakeling. Laten we, om dit beter te begrijpen, dit voorbeeld van eerder bekijken:
$hello = 'Hello';$world = 'World';$hello_world = $hello.' '.$world;echo $hello_world; // outputs "Hello World"
Ik heb niets veranderd aan de bovenstaande code. Maar je zou PHP kunnen schrijven om twee strings op een heel andere manier samen te voegen. Dat ziet er als volgt uit:
$output = 'Hello';$output .= ' ';$output .= 'World';echo $output; // outputs "Hello World"
Dus wat dit doet is aan het eind van onze $output
string de spatie invoegen (), en dan het woord
World
. Dus het resultaat is dat we exact dezelfde uitvoer krijgen. Dus effectief is elke keer dat u .=
ziet, het hetzelfde als $output = $output.$new_thing;
of iets dergelijks. Of je dit voorbeeld goed of slecht vindt is een kwestie van persoonlijke smaak. Maar als je de code van anderen leest, weet ik zeker dat je mensen dit van tijd tot tijd ziet gebruiken, dus het is goed om dit aspect van PHP concatenation te begrijpen.
Now Go Concatenate Your Strings, Thoughtfully
Voordat ik afsluit, een korte waarschuwing: het vermogen leren om strings te “concaten” met PHP is belangrijk en zeer waardevol. Maar het is ook vaak een teken dat je minder efficiënte dingen doet dan je zou moeten doen. Templates (bestanden die alleen je HTML + reeds geordende variabelen bevatten) zijn vaak een betere oplossing voor de meeste dingen die je doet dan het simpelweg aan elkaar plakken van veel reeksen HTML reeksen en variabelen in bijvoorbeeld een WordPress functions.php
bestand.
Dat gezegd hebbende, aaneenschakeling in PHP is leuk en belangrijk om te leren. Hoewel ik denk dat het spaarzaam moet worden gebruikt, zal ik ook zeggen dat in de tien jaar dat ik PHP schrijf er waarschijnlijk nooit een enkele week is geweest waarin ik de krachten van PHP string concatenation niet heb gebruikt. Veel geluk!