せめてコードを実際に実行してから質問しろ。
最初に提示されたコードのうち、出力が「変数です」になるのは例1だけだ。
例2は「,$var,です」になるし、例3は「$var,です」になる。こんなことは、人に聞く前に試せば分かる話だ。
なんでそうなるか分からなかったら、そう質問すればいい。
echo('あ', 'い', 'う'); // コンマ区切り
とあった場合、echo文には「あ」「い」「う」の3つが引数として渡される。
この場合、echoはあ、い、うを順に出力する。だから出力結果は「あいう」になる。
echo('あ' . 'い' . 'う'); //ピリオド区切り
の場合、echoには「'あ' . 'い' . 'う'」、つまりあ、い、うを連結したもの、要するに 'あいう' というひとつの文字列が渡される。
両者は同じではない。同じように動くのは、
「あを出力→いを出力→うを出力」と「あ、い、うを繋げたものを出力」とで同じ結果になるように見えるから、というだけに過ぎない。
> $var = "変数";
> echo ',$var,です';
試したか?どう考えても試してないだろう。「,$var,です」が出力されるはずだ。
echoの引数は「,$var,です」という文字列なのでそのまま出力される。
ダブルクォートの場合は違った動作になる。singlecatさんのレスを参照。
> $var = "変数";
> echo $var.'です';
$varは、"変数"なわけだ。
つまりこれは、 echo "変数" . 'です';と同じ、という事になる。
echoには"変数"と'です'を繋げた「変数です」が引数として渡されるので、「変数です」と出力される。
「正しい」のは
echo $var . 'です'; //ピリオド連結
echo $var , 'です'; //カンマ区切り
echo "$varです"; //ダブルクォートで括る
速度は2番目が速いのだが、分かりやすいのは1番目。
3番目は予期せぬ動作をされる可能性が多少あるが、出力文字列が長い場合に読みやすい。
お礼
nicolishさん ご回答、ありがとうございました。 詳細なご説明につき、論理が良く分かりました。