Blog

PHP Single vs. Double Quotes

For a long time, I've been a proponent of using single-quotes as opposed to double-quotes when assigning string literals (strings containing no variables) to a variable (eg: $var = 'string'; VS $var = "string"). I just did some research to find out how much (if any) impact using single-vs-double quotes had on performance. I took the code from this blog post: http://spindrop.us/2007/03/03/php-double-versus-single-quotes/ modified the MAX constant to 8,000,000 and then ran the test on our Nexcess server. The results were fairly consistent: Time 1: 5.9485120773315 ($c = "test " . $i; ) Time 2: 7.0326972007751 ($c = "test $i"; ) Time 3: 5.9164550304413 ($c = 'test ' . $i; ) It's clear that embedding variables in strings is less efficient, but the difference between normal single-vs-double quotes is negligible (at least on our server configuration with this test). Despite the lack of clear performance benefits, I still think it best practice to use single-quotes when using string literals, as it denotes that a string doesn't contain any variables. One benefit of this is that when skimming code, you can more quickly process which variables are string literals vs strings with embedded variables. The Zend Framework Coding Standard also recommends this practice: http://framework.zend.com/manual/en/coding-standard.coding-style.html

Posted on February 7, 2010

Posted by Erik Hansen

Comments

cam's picture

Most programming languages

Most programming languages don't give you that much latitude when it comes to quotes. Of course, the guys that brought us PHP are kind of on the dyslexic side when it comes to a lot of things. The name itself for example. How exactly to you get PHP from Hypertext Pre-Processor? Shouldn't it be HPP?

And what about the nastiness that is a PHP foreach array loop?


$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
// do something
}

Any normal human being would read this as:

for each array as value do something

Wouldn't it make far more sense to do something like:


$arr = array(1, 2, 3, 4);
foreach ($value in $arr) {
// do something
}

for each value in array do something

Of course, those are just my thoughts on it - YMMV.

Add comment

The content of this field is kept private and will not be shown publicly. If you have a Gravatar account associated with the e-mail address you provide, it will be used to display your avatar.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options