PHPで開発をしていると文字列をクォーテーションで囲む場面があると思います。
その際、シングルクォーテーションとダブルクォーテーションのどちらで囲んでも文字列として認識してくれます。
では、この2つの違いは一体何なのでしょうか?
’ ’と” ”の違いとは
結論からいうとこの二つの一番大きな違いは変数や配列を認識してくれるかどうかです。
シングルクォーテーションの場合はクォーテーション内にある文字全てを文字列として認識してしまいます。
そのため、シングルクォーテーションの中に変数を書いてもその中身を反映してくれず、変数名が文字列になってしまいます。
一方で、ダブルクォーテーションの場合変数や配列があるとその中身までみてくれます。
シングルクォーテーションの文字列と変数を結合することもできますが、ダブルクォーテーションでまとめてしまった方がスッキリすることもあります。
シングルクォーテーション | ダブルクォーテーション | |
変数 | 認識しない | 認識する |
配列 | 認識しない | 認識する |
例えば
それでは実際の例を見てみましょう。
例1
例えば、以下のようなコードを書いた場合どのように表示されるでしょうか?
$number = 1;
echo '数字は{$number}です。';
echo '<br>';
echo "数字は{$number}です。";
<実行結果>
数字は{$number}です。
数字は1です。
シングルクォーテーションだとそのまま$numberと表示されますが、ダブルクォーテーションだと変数$numberに代入されている1が表示されています。
例2
では、次のような場合はどうでしょうか?
$number = 2;
echo "'数字は{$number}です。'";
echo '"数字は{$number}です。"';
<実行結果>
‘数字は2です。’
“数字は{$number}です。”
シングルクォーテーションまで実行結果に表示されています。
ダブルクォーテーションでシングルクォーテーションを囲むことで’ ’を文字列として表示することができます。
逆にシングルクォーテーションでダブルクォーテーションを囲むことで” “を文字列として表示することはできますが、変数の中身を反映させることはできません。
どのように使い分けるのか
言語や慣習によってどちらを使うべきなのか変わってくるので、一概にどちらが良いというのはありません。
ただPHPに限定すると基本的にシングルクォーテーションを使い、必要に応じてダブルクォーテーションを使うということが多いように感じます。
もし、どちらを使うべきか迷った場合は調べてみたり誰かに聞いてみましょう。
まとめ
シングルクォーテーションとダブルクォーテーションの違いを知っているとコードの書き方の幅が広がります。
ぜひ、活用しましょう!