"" of ''

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Rob -

- Rob -

04/02/2017 07:59:48
Quote Anchor link
Hallo!

Ik vroeg mij af wat ik nou eigenlijk moest gebruiken tijdens het programmeren, "" of ''? En waarom moet ik dan "" of '' gebruiken? Een linkje naar een Nederlandse website met hierin uitleg zou ook hartelijk welkom zijn ;)

Mvg,
Rob
 
PHP hulp

PHP hulp

29/03/2024 01:01:53
 
Marthijn Buijs

Marthijn Buijs

04/02/2017 10:30:49
Quote Anchor link
Het maakt in de meeste gevallen niet uit. Mijn eigen voorkeur gaat naar de enkele quotes.

Bekijk deze link maar eens, hier kun je zien dat bijvoorbeeld "\n" alleen werkt met dubbele quotes.
Gewijzigd op 04/02/2017 10:46:11 door Marthijn Buijs
 
Joakim Broden

Joakim Broden

04/02/2017 11:19:59
Quote Anchor link
Ik gebruik altijd, ' ipv ". Anders krijg je met HTML tags altijd het probleem dat je moet escapen enzo. Dat ziet er gewoon niet uit en je vergeet snel iets te escapen waardoor je snel fouten maakt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    echo '<a href="#" target="_blank" title="'.$title.'">'.$title.'</a>'.PHP_EOL;
    // Ziet er beter uit dan, typt makkelijker en minder kans op fouten.
    echo "<a href=\"#\" target=\"_blank\" title=\"".$title."\">".$title."</a>\n";
?>


Ik gebruik zeer zelden \n na een lijn eigenlijk, dan gebruik ik eerder PHP_EOL. \n gebruik je alleen om HTML netjes te krijgen?
Gewijzigd op 04/02/2017 11:21:17 door Joakim Broden
 
- Ariën  -
Beheerder

- Ariën -

04/02/2017 12:03:30
Quote Anchor link
De linebreaks verschillen geloof ik per OS. Op Mac's wordt weer anders omgegaan als met Linux, en PHP_EOL zorgt daarbij voor een juiste line-break. Dat staat mij bij.
 
Wouter J

Wouter J

04/02/2017 12:40:46
Quote Anchor link
\n betekend new line, \r is carriage return. In een voorbeeldje, een \n doet officieel alleen dit: (_ huidige plek van de cursor)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
Voor:
Wat tekst _

Na \n:
Wat tekst
          _


Een \r zorgt er officieel weer voor dat je terug gaat naar de eerste plek op een regel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
Voor:
Wat tekst _

Na \r:
Wat tekst (met cursor op de plek van "W")

Na \n\r:
Wat tekst
_


Op Unix doet \n gewoon al meteen beide. Op windows moet je eerst de kolom resetten (\r) en dan een rij naar beneden (\n). De PHP_EOL zal op Unix systemen alleen voor \n zorgen, maar op Windows \r\n.
 
Thomas van den Heuvel

Thomas van den Heuvel

04/02/2017 15:09:22
Quote Anchor link
Wat handiger is (enkele of dubbele quote) kan alleen bepaald worden aan de hand van een concreet voorbeeld. Er is geen universeel sluitend antwoord voor het een of het ander, beide hebben een bestaandsrecht.

Je zou wel van een vuistregel gebruik kunnen maken: enkele quote (') als het kan, dubbele quote (") als het moet.

En alsjeblieft mensen, PHP is niet uitgevonden om statische lappen HTML te echo'en. Je kunt te allen tijde een PHP blok openen en sluiten. Zelfs al gebruik je single quotes zoals @Joakim voorstelt ben je nat als je hier, om wat voor reden dan ook, JavaScript of inline CSS in verwerkt, die hebben namelijk af en toe ook single quotes nodig zodat je alsnog in de knoei komt met quotes.
 
- Rob -

- Rob -

04/02/2017 17:02:00
Quote Anchor link
Bedankt voor alle reacties!
Gewijzigd op 04/02/2017 17:03:05 door - Rob -
 
Ozzie PHP

Ozzie PHP

04/02/2017 17:35:20
Quote Anchor link
Er ontbreekt nog een stukje essentiële uitleg. Vreemd dat dat door niemand wordt genoemd.

Content die tussen dubbele quotes staat wordt geëvalueerd, in tegenstelling tot content die tussen enkele quotes staat.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

$naam
= 'Rob';

echo 'Ik ben $naam.';

// Op het scherm zal verschijnen: Ik ben $naam.

echo "Ik ben $naam.";

// Op het scherm zal verschijnen: Ik ben Rob.

?>

Dit betekent dat in theorie content die tussen enkele quotes staat, sneller wordt verwerkt dan content die tussen dubbele quotes staat. De PHP-parser hoeft dan minder hard te werken. Zelf zul je daar in de praktijk weinig van merken, maar het is wel de moeite waard om te vermelden.

De meeste mensen gebruiken in PHP enkele quotes. De voorbeeldzin van hierboven wordt dan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

echo 'Ik ben ' . $naam . '.';

?>

En wanneer het in de html zelf staat, dan wordt het:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Ik ben <?php echo $naam; ?>.

Overigens gebruik ik in dit voorbeeld de variabele $naam. Het is gebruikelijk om in code Engelse benamingen te gebruiken, dus dan zou het in dit geval $name worden.
 
Eddy E

Eddy E

05/02/2017 07:46:42
Quote Anchor link
Echter, bij queries gebruik je vaak weer " omdat je daarin enkele quotes gebruikt.
Voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$query
= "
    SELECT DISTINCT emailadres, naam
    FROM tabel
    WHERE naam = '"
.$naam."'
    AND ietsanders = '"
.$ietsanders."'
    ORDER BY id DESC"
;
?>


Begin je met enkele quotes, wordt het dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$query
= '
    SELECT DISTINCT emailadres, naam
    FROM tabel
    WHERE naam = \''
.$naam.'\'
    AND ietsanders = '".$ietsanders."'
    ORDER BY id DESC'
;
?>
Gewijzigd op 05/02/2017 07:57:46 door Eddy E
 
Joakim Broden

Joakim Broden

06/02/2017 09:08:03
Quote Anchor link
@Thomas, klopt PHP is ook uitgevonden om HTML te echoën. Maar bv lexicon entries kunnen HTML bevatten of dergelijke ;-) Vreemd dat je over inline CSS begint want dat is gewoon NOOIT van toepassing.

@Eddy voor zover ik weet kun je gewoon met " werken in queries, of ben ik nou in de waar aangezien ik altijd database classes gebruik die de daadwerkelijke queries voor me maken.
 
Thomas van den Heuvel

Thomas van den Heuvel

06/02/2017 15:40:36
Quote Anchor link
Joakim Broden op 06/02/2017 09:08:03:
klopt PHP is ook uitgevonden om HTML te echoën.

Klopt, voor de dynamische delen. Ik had het over de statische delen. Het echo'en van laatstgenoemde is niet nodig en maakt code alleen maar slechter leesbaar.

Ook is het onderscheid statisch-dynamisch zoek als je plakken HTML echo'd. Zoals @Ozzie zegt is er ook een functioneel verschil dat in strings tussen dubbele quotes variabelen geëvalueerd worden, maar uit oogpunt van leesbaarheid is het wellicht toch verstandiger om de "variabelen buiten de quotes" te halen. En als je dan toch bezig bent, echo dan ook alleen de variabelen in PHP, en niet de rest.

Joakim Broden op 06/02/2017 09:08:03:
Vreemd dat je over inline CSS begint want dat is gewoon NOOIT van toepassing.

Ik kan mij best voorstellen dat dynamische HTML-code mogelijk inline stijlen heeft. Of JavaScript snippets. Niet optimaal, maar het is mogelijk. En dan kom je wederom in de knoei met de mix van enkele/dubbele quotes (stijlattribuutwaarden en event handlers staan weer tussen enkele quotes), waar het mij eigenlijk om te doen was.
 
Willem vp

Willem vp

06/02/2017 18:24:25
Quote Anchor link
Thomas van den Heuvel op 06/02/2017 15:40:36:
maar uit oogpunt van leesbaarheid is het wellicht toch verstandiger om de "variabelen buiten de quotes" te halen.

Dat vind ik niet per se leesbaarder. Vooral wanneer je meerdere variabelen in een string hebt kan dat een oerwoud aan quotes geven waarin je het overzicht compleet verliest.

Overigens apart dat ik nooit iemand heredocs zie gebruiken, terwijl een heredoc ideaal is bij grotere strings:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$sql
= <<<EOT
   select *
   from $table
   where type= '$type'
   limit $start, $max_results;
EOT
;
$result = $dbh->query($sql);
?>


Toevoeging op 06/02/2017 18:41:06:

Ozzie PHP op 04/02/2017 17:35:20:
Dit betekent dat in theorie content die tussen enkele quotes staat, sneller wordt verwerkt dan content die tussen dubbele quotes staat.

In de praktijk betekent dat, dat mensen dus strings gaan opsplitsen en aan elkaar gaan plakken (zoals je in het voorbeeld erna doet). Dat geeft weer extra overhead, waardoor de theoretische performancewinst ongedaan wordt gemaakt.

Sterker: vanaf 2 of 3 variabelen is het sneller om je variabelen juist tússen dubbele quotes te houden. Sowieso zijn ook in dat geval de verschillen verwaarloosbaar. Ik heb het dan over nanosecondes. Als je wilt optimaliseren, kun je beter naar andere aspecten van je code kijken. ;-)
 
Eddy E

Eddy E

07/02/2017 21:28:21
Quote Anchor link
Als je dan toch over nano-seconden spreekt:

Er schijnt verschil te zijn tussen deze twee regels qua performance:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
echo "Er was eens een " . $dier . " die stierf door " . $doodsoorzaak;
echo "Er was eens een " , $dier , " die stierf door " , $doodsoorzaak;
?>


De punt voegt eerst de stukjes samen en echoot ze dan. De tweede (die met de komma) echoot ze direct na elkaar en is dus sneller...
 
Ozzie PHP

Ozzie PHP

07/02/2017 23:16:05
Quote Anchor link
@Eddy

Correct! Die komma is inderdaad sneller. Ik heb hier op het forum lang geleden eens de vraag gesteld waarom dan toch iedereen de punt gebruikt ... en dat was eigenlijk vanuit gewoonte.

PS ... het is DAT dier ;-) ( Sorry, ik kon het niet laten om de leraar even te corrigeren :P )

@Willem

Zo schijnt het ook te kunnen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$sql
= <<<SQL
   select *
   from $table
   where type= '$type'
   limit $start, $max_results;
SQL
;
$result = $dbh->query($sql);
?>
Gewijzigd op 07/02/2017 23:18:29 door Ozzie PHP
 
Willem vp

Willem vp

07/02/2017 23:24:23
Quote Anchor link
Eddy E op 07/02/2017 21:28:21:
Er schijnt verschil te zijn tussen deze twee regels qua performance:

Klopt. In het tweede geval ziet echo 4 losse strings die afzonderlijk worden ge-echo'd. In het eerste geval worden de 4 losse strings eerst aan elkaar geplakt tot 1 grote string. Voor dat plakken zijn (intern) 4 extra tijdelijke variabelen nodig, waardoor de code groter en complexer wordt, en dus meer tijd kost om uitgevoerd te worden.


Toevoeging op 07/02/2017 23:48:45:

Ozzie PHP op 07/02/2017 23:16:05:
Zo schijnt het ook te kunnen:

Klopt, in principe kun je elke willekeurige string van alfanumerieke tekens en underscores gebruiken. En als je een eindje verderop nog een heredoc gebruikt, kun je diezelfde string weer nemen; die hoeft niet steeds uniek te zijn.

De regeltjes in PHP zijn overigens een stuk strenger dan die in Perl (waar ik veel meer in programmeer) en ik had eerlijk gezegd geen zin om uit te proberen wat wel en niet werkte, dus heb ik lekker veilig voor 'EOT' gekozen. ;-)

In Perl zou je namelijk ook iets als dit kunnen doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$str = <<'';
Hello world

print $str;

of zelfs (geeft hetzelfde resultaat)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$str = <<'print "Einde\n";';
Hello world
print "Einde\n";
print $str;

Dit is overigens geen aanbevolen codeerstijl. ;-)
 



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.