Gebruik van de .= operator

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Guido  -

Guido -

24/12/2018 18:03:26
Quote Anchor link
Hallo,

Ik heb even een vraag over het gebruik van de .= (concatenating assignment) operator.

Ik definieer mijn variabele:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$var = '';


Als ik meerdere strings wil toevoegen kom ik 2 verschillende manieren tegen.

Deze:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$var = // string 1
$var .= // string 2


En deze:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$var .= // string 1
$var .= // string 2


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
 
PHP hulp

PHP hulp

19/04/2024 15:55:10
 
- Ariën  -
Beheerder

- Ariën -

24/12/2018 18:52:04
Quote Anchor link
Bij de laatste is de var niet gedefinieerd. Dus ik zou de eerste kiezen.
Qua tijdswinst maakt het weinig uit.
 
Thomas van den Heuvel

Thomas van den Heuvel

24/12/2018 20:22:01
Quote Anchor link
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.
 
Guido  -

Guido -

24/12/2018 21:01:01
Quote Anchor link
In dit geval betrof het een erg lange string die ik voor mezelf wat overzichtelijker wou maken.

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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$var = '';
$var .= // string 1
$var .= // string 2
return $var;


(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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$var = '';
$var = // string 1
$var .= // string 2
return $var;
 
Thomas van den Heuvel

Thomas van den Heuvel

24/12/2018 21:21:58
Quote Anchor link
Iets concateneren aan een niet-bestaande variabele is in ieder geval fout.

Dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var
.= 'whatever';
?>

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.
 
Rob Doemaarwat

Rob Doemaarwat

24/12/2018 23:14:05
Quote Anchor link
Het voordeel van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$var = '';
$var .= // string 1
$var .= // string 2

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$var = // string 1
$var .= // string 2

dan heb je een probleem.
 
Thomas van den Heuvel

Thomas van den Heuvel

24/12/2018 23:52:16
Quote Anchor link
Mja als .= een stuk verderop in code staat en/of afhangt van condities is initialiseren natuurlijk verstanding, maar sec
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$var
= '';
$var .= '<some string or string var>';
?>

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.
 
Ozzie PHP

Ozzie PHP

25/12/2018 00:36:27
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

?>
 
Guido  -

Guido -

25/12/2018 11:38:07
Quote Anchor link
Hoi,

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
 
- Ariën  -
Beheerder

- Ariën -

27/12/2018 10:37:22
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.