PHPのシングルクォーテーションとダブルクォーテーションの違いを無視していた
PHPのシングルクォーテーションとダブルクォーテーションの違いを良く理解しないで使っていました。
他の言語と違った意味があった。
何が違って、どっちを使えばいいのか...
◆シングルクォーテーションとダブルクォーテーションの違い
この2つのクォーテーションについては何も考えていないで、入れ子になったときに使い分ければよいくらいしか思っていませんでした。
こんないい加減だといつかはまるときが来るはずで、やっぱりはまりました。反省。
で、いろいろ調べて...結果を整理すると...
●そもそも、使い方が違う。...ってか、意味が違って結果が違うようになる。
どういうことかというと、
★ダブルクォーテーション → 文字列中の変数を展開する
★シングルクォーテーション → 文字列中の変数を展開しない
コード例
<?php
$ohayo = 'おはよう';
echo ('あさのあいさつは、「 $ohayo 」です。<br>');
echo ("あさのあいさつは、「 $ohayo 」です。<br>");
?>
結果
あさのあいさつは、「 $ohayo 」です。
あさのあいさつは、「 おはよう 」です。
変数の後の空白については、後述
◆変数の後の空白を参照してください。
参照:
layer8
このページのトップ
◆シングルクォーテーションとダブルクォーテーションの速度の比較
ダブルクォーテーションは文字列中の変数を展開して、シングルクォーテーションは文字列中の変数を展開しない。
なら、単純に考えてシングルクォーテーションのほうが早いに決まっている。だから、基本的にシングルクォーテーションを使えばいい。
これで、○!!
ただし、これにこだわってシングルクォーテーションを使って大量の文字列を繋ぐと、ダブルクォーテーションを使って一括でやるより遅くなるから
注意が必要だ。これもよく考えれば予想がつく。
参照:
toriimiyukkiの日記
このページのトップ
◆変数の後の空白
ダブルクォーテーション内の変数とその直後の文字列の境目が正しく判断されなくて、意図しない結果が表示される場合がある。
これを避けるためには、変数を{ }の記述で区切ります。「$」と「{」が連続しているときに区切りとして有効になります。
コード例
<?php
$ohayo = 'おはよう';
echo("あさのあいさつは、「$ohayo」です。<br>");
echo("あさのあいさつは、「$ohayo 」です。<br>");
echo("あさのあいさつは、「{$ohayo}」です。<br>");
echo("あさのあいさつは、「${ohayo}」です。<br>");
echo("あさのあいさつは、「${ ohayo }」です。<br>");
echo("あさのあいさつは、「{ $ohayo }」です。<br>");
echo("あさのあいさつは、「 ${ohayo} 」です。<br>");
?>
結果
あさのあいさつは、「
あさのあいさつは、「おはよう 」です。
あさのあいさつは、「おはよう」です。
あさのあいさつは、「おはよう」です。
あさのあいさつは、「おはよう」です。
あさのあいさつは、「{ おはよう }」です。
あさのあいさつは、「 おはよう 」です。
参照:
かっつのXHTML+PHP
このページのトップ