Wim
|
het is trouwens opmerkelijk sneller om een variabele buiten quotes te plaatsen.
Een voorbeeld
$toetsenbord = 'azerty';
echo ('De ingestelde toetsenbordlayout is '.$toetsenbord);
$toetsenbord = 'azerty'; echo ('De ingestelde toetsenbordlayout is '.$toetsenbord);
is dus sneller dan
$toetsenbord = 'azerty';
echo ("De ingestelde toetsenbordlayout is $toetsenbord");
$toetsenbord = 'azerty'; echo ("De ingestelde toetsenbordlayout is $toetsenbord");
Reden:
Bij de eerste methode weet php al met zekerheid dat het een variabele is. Bij de 2de methode moet PHP dit zelf "ondervinden". PHP vindt de variabele en moet hier dan een berekening mee doen.
Ongeveer 1µs verschil meen ik mij te herinneren (of mss zelfs 10µs) |
|
|
nemesiskoen
|
Scott, er bestaat geen een programmeertaal waar het wordt toegelaten. Dus waarom zouden ze daar in PHP verandering in brengen. Misschien omdat de gebruikers lui zijn? En wat als je {$foo} wil echoën ipv de waarde van $foo, dan moet je weer met single quotes gaan werken en meer gerotzooi. |
|
|
Scott
|
Das niet helemaal waar hoor, nemesiskoen.
<?php
$foo = "bar";
echo '$foo'; // output: $foo
echo $foo; //output: bar
echo '$foo is gelijk aan bar'; //output: $foo is gelijk aan bar
//bovenstaande echo't de variabele, niet de waarde ervan
echo $foo .' is gelijk aan bar'; // zo werkt het wel
echo "$foo is gelijk aan bar"; //output: bar is gelijk aan bar
// in tegenstelling tot enkele quotes, echo't hij hier wel de waarde van de variabele (niet netjes)
echo '/$foo is gelijk aan bar'; //ouput: /$foo is gelijk aan bar. sowieso is de variabele escapen hier niet nodig omdat hij tussen enkele quotes staat, maar bovendien escapen we dingen met een backslash (\) en niet met een forwardslash (/).
echo "{$foo} is gelijk aan bar"; //output: bar is gelijk aan bar
//het zal dus de variabele zijn WAARDE opvragen. Maar dan kan je net zo goed doen:
echo $foo ." is gelijk aan bar"; //1 teken minder;)
//en het is gewoon minder slordig
//dat laatste is niet zo, $foo ." .." is even net/slordig als "{$foo} .."
?>
<?php $foo = "bar"; echo '$foo'; // output: $foo echo '$foo is gelijk aan bar'; //output: $foo is gelijk aan bar //bovenstaande echo't de variabele, niet de waarde ervan echo $foo .' is gelijk aan bar'; // zo werkt het wel echo "$foo is gelijk aan bar"; //output: bar is gelijk aan bar // in tegenstelling tot enkele quotes, echo't hij hier wel de waarde van de variabele (niet netjes) echo '/$foo is gelijk aan bar'; //ouput: /$foo is gelijk aan bar. sowieso is de variabele escapen hier niet nodig omdat hij tussen enkele quotes staat, maar bovendien escapen we dingen met een backslash (\) en niet met een forwardslash (/). echo "{$foo} is gelijk aan bar"; //output: bar is gelijk aan bar //het zal dus de variabele zijn WAARDE opvragen. Maar dan kan je net zo goed doen: echo $foo ." is gelijk aan bar"; //1 teken minder;) //en het is gewoon minder slordig //dat laatste is niet zo, $foo ." .." is even net/slordig als "{$foo} .." ?>
|
|
|
Wim
|
PHP.NET Wrote:Citaat: When possible, it is faster to pass multiple parameters to echo versus passing one parameter which is many concatinations. Below is a script which will preform a quick benchmark for you to see:
[..code..]
The results I got when running the script above were 6.047 seconds for concatinations and 1.781 seconds for parameter passing. This was just executing the script via command line, having the output dumped to a console. The performace increase is even greater when using a script on a webpage with output buffering. |
|
|
haytjes
|
In dubbele quotes parsed PHP de variablen wel om. Enkele niet.
Zoals hierboven stond, het is een language construct. Haakjes kunnen weg.
echo kan meerdere argumenten hebben, dan mag je juist geen haakjes gebruiken.
<?php
echo 'hoi', 'iedereen';
$arr = range( 'a', 'e' );
echo '<pre>', print_r( $arr ), '</pre>';
?>
<?php $arr = range( 'a', 'e' ); ?>
|
|
|
nemesiskoen
|
Net zoals print is dit geen functie maar een language construct. Haakjes zijn dus niet nodig, wel quotes.
Het wordt aangeraden om deze quotes te sluiten als je een variabele wil echo'en.
Bv.
<?php
$foo = "bar";
echo '$foo'; //die quotes zijn nergens voor nodig, zeker omdat de variabele alleen staat
echo $foo; //werkt evengoed
echo '$foo is gelijk aan bar'; //output: bar is gelijk aan bar
//bovenstaande is dus minder 'ordelijk'
echo $foo .' is gelijk aan bar'; //is beter
echo "$foo is gelijk aan bar"; //output: $foo is gelijk aan bar
//het zal dus, bij dubbele quotes, de ECHTE ingevoerde waarde printen
//een beetje hetzelfde als:
echo '/$foo is gelijk aan bar'; //ouput: $foo is gelijk aan bar, omdat $ wordt geëscaped (/)
echo "{$foo} is gelijk aan bar"; //output: bar is gelijk aan bar
//het zal dus de variabele zijn WAARDE opvragen. Maar dan kan je net zo goed doen:
echo $foo ." is gelijk aan bar"; //1 teken minder;)
//en het is gewoon minder slordig
?>
<?php $foo = "bar"; echo '$foo'; //die quotes zijn nergens voor nodig, zeker omdat de variabele alleen staat echo $foo; //werkt evengoed echo '$foo is gelijk aan bar'; //output: bar is gelijk aan bar //bovenstaande is dus minder 'ordelijk' echo $foo .' is gelijk aan bar'; //is beter echo "$foo is gelijk aan bar"; //output: $foo is gelijk aan bar //het zal dus, bij dubbele quotes, de ECHTE ingevoerde waarde printen //een beetje hetzelfde als: echo '/$foo is gelijk aan bar'; //ouput: $foo is gelijk aan bar, omdat $ wordt geëscaped (/) echo "{$foo} is gelijk aan bar"; //output: bar is gelijk aan bar //het zal dus de variabele zijn WAARDE opvragen. Maar dan kan je net zo goed doen: echo $foo ." is gelijk aan bar"; //1 teken minder;) //en het is gewoon minder slordig ?>
|
|
|