Gebruik van de .= operator
Ik heb even een vraag over het gebruik van de .= (concatenating assignment) operator.
Ik definieer mijn variabele:
Als ik meerdere strings wil toevoegen kom ik 2 verschillende manieren tegen.
Deze:
En deze:
Wat is de juiste manier, en waarom?
Zelf zou ik de eerste kiezen, omdat ik string 2 wil toevoegen aan string 1. Maar ik twijfel dus.
Guido
Qua tijdswinst maakt het weinig uit.
Vraag is, is er wel de noodzaak om alles aan elkaar te rijgen? Ben je echt een soort van string aan het bouwen? Hier zijn mogelijk ook andere -en wellicht betere- manieren voor.
Maar het is nog steeds niet helemaal duidelijk, als ik het goed begrijp definieer ik in onderstaande vb eerst de $var en daarna voeg ik string 1 en 2 daaraan toe.
(dit scenario kom ik dus regelmatig tegen in scripts)
Als ik hierin gelijk heb, vraag ik me af waarom ik iets aan een lege $var zou toevoegen?
Persoonlijk vind ik dit logischer:
Dit:
Levert je een notice op (Undefined variable: var in X on line Y). Dit zal verder wel doen wat het moet doen, maar ondertussen lopen je errorlogs misschien vol met dit soort flauwekul terwijl andere (en mogelijk urgentere) fouten ondersneeuwen in dit soort ruis.
Je zou $var ook direct kunnen initialiseren op string 1, het is niet nodig om eerst expliciet een lege string toe te kennen aan $var.
Maar dit is allemaal nogal abstract. Als "string 1" en "string 2" complete plakken (statische) HTML zijn zou ik eerder voor output buffering gaan. Tis maar net hoe alles er concreet uit ziet en wat handig werkt.
is dat je de $var eerst ergens initialiseert, en er vervolgens altijd vanuit kunt gaan dat ie bestaat. Mocht je opeens besluiten om het toevoegen van string 1 en string 2 om te draaien, dan gaat er niks fout.
Draai je dit echter om:
dan heb je een probleem.
na elkaar is onzinnig, dan doe je natuurlijk direct $var = '<some string or string var>';
Daarom informeerde ik ook een beetje naar de context. Er is geen universele regel voor dit soort dingen, vooral niet als het zo abstract is.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$string1 = 'ik ben een complete string';
$string2 = 'ik ben een ';
$string2 .= 'aangevulde string';
$string3 = ''; // dit is een lege string, maar hij bestaat wel
if ($test === true) {
$string3 .= 'nu ben ik gevuld';
}
echo $string3; // dit geeft nooit een foutmelding/waarschuwing ongeacht of $test waar of onwaar is
echo $string4; // dit geeft wel een foutmelding/waarschuwing, want deze string bestaat niet
?>
$string1 = 'ik ben een complete string';
$string2 = 'ik ben een ';
$string2 .= 'aangevulde string';
$string3 = ''; // dit is een lege string, maar hij bestaat wel
if ($test === true) {
$string3 .= 'nu ben ik gevuld';
}
echo $string3; // dit geeft nooit een foutmelding/waarschuwing ongeacht of $test waar of onwaar is
echo $string4; // dit geeft wel een foutmelding/waarschuwing, want deze string bestaat niet
?>
Dank voor jullie reactie, een stuk duidelijker nu.
@Thomas: ik heb een script bestaande uit veel strings die ik aan het eind vh script in 1 keer return.
Fijne dagen!
Guido
Het concateneren (wat een prachtig woord) zie ik enkel nuttig als je een string door middel van een loop wilt aanvullen. Ik heb het nooit anders gebruikt.