"" of ''
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
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
Code (php)
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
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.
Een \r zorgt er officieel weer voor dat je terug gaat naar de eerste plek op een regel:
Code (php)
1
2
3
4
5
6
7
8
9
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
_
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.
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.
Gewijzigd op 04/02/2017 17:03:05 door - Rob -
Content die tussen dubbele quotes staat wordt geëvalueerd, in tegenstelling tot content die tussen enkele quotes staat.
Code (php)
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:
En wanneer het in de html zelf staat, dan wordt het:
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.
Voorbeeld:
Code (php)
1
2
3
4
5
6
7
8
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";
?>
$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)
1
2
3
4
5
6
7
8
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';
?>
$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
@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.
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.
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)
1
2
3
4
5
6
7
8
9
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);
?>
$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. ;-)
Er schijnt verschil te zijn tussen deze twee regels qua performance:
Code (php)
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...
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)
1
2
3
4
5
6
7
8
9
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);
?>
$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
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:
of zelfs (geeft hetzelfde resultaat)
Dit is overigens geen aanbevolen codeerstijl. ;-)