The key difference, as everyone's pointed out, is that "double-quoted strings" will expand $variables and control escapes (like \\n) whilst 'single-quoted strings' do neither. That means that '\\n' won't output a linefeed!

Being able to put variables instream in a string sounds like a nifty idea, after all, Perl works that way, but it makes the parser a bit hairy. Referencing arrays and objects in a string isn't as clean as outside a string. I avoid instream variables, myself, always preferring the concatenation operator.

I'd say us whichever you prefer, but as Jay has said, there is a cost to the instream expansion. I ran a simple test assigning the same string to another variables many thousand times and timed it. I did it one way using double-quotes and another way using single-quotes. The difference was negligable. Then I added something: I added the index counter to the string, so that PHP was doing either variable substitution in double-quotes or string concatenation with single. The latter was more than four (4) times faster. Yes, I was surprised, too.

Which brings me to '.': this character is the string-concatenation operator. It just joins two strings together. That's all it does.

Wade.