プログラミング勉強日記
2020年9月7日
シングルクォーテーションもダブルクォーテーションも同じ場面で使用するけど、実際にどんな違いがあるのかをまとめる。
特徴
シングルクォーテーション:中身を文字列として扱う(変数や制御文字列もただの文字列として扱う)
ダブルクォーテーション:中身を文字列として扱うが、変数や制御文字列はもともとの元として扱う
シングルクォーテーションはすべて文字列として扱うので、シングルクォーテーションの方が速度が速い。
速度における違い
以下のようにただの文字列を出力する場合は、出力される内容は同じ。
//ダブルクォーテーション
echo "Hello World";
echo '<br>';
//シングルクォーテーション
echo 'Hello World';
Hello World
Hello World
冒頭でも述べたが、動作処理速度は変数展開を用いる場合と変数の単純代入の場合、シングルクォーテーション>>ダブルクォーテーションである。(約1.2~2倍程度の差がある)
しかし、文字列連結の場合と文字列比較の場合には速度の差はあまりない。
動作における違い
冒頭に変数や制御文字列の扱いが異なると記述したが、具体例を用いて説明する。制御文字列は、改行(\n
)や空文字(nil
)といった文字以外の特別な制御を実行するために用いられる文字。
以下の具体例のように、シングルクォーテーションの場合は、制御文字列や変数がそのまま文字列として出力されている。ダブルクォーテーションはそのまま変数の中身や制御文字列として出力されている。
$str = "World";
echo 'Hello $str';
echo "Hello $str";
echo "Hello {$str}";
echo 'Hello World\n';
echo "Hello World\n";
Hello $str
Hello World
Hello World
Hello World\n
Hello World(表示上改行される)
まとめ
システムとしてはわずかではあるが、シングルクォーテーションを使用した方が早くなる。(大規模なシステムの場合は大きい差になる)
基本的にはシングルクォーテーションを使用して、必要な個所(変数展開など)のときにダブルクォーテーションを使うと良い。
参考文献
【PHP】’(シングルクォーテーション)と”(ダブルクォーテーション)はどちらを使うべきか(PHP高速化)
ダブルクォーテーション、シングルクォーテーションの違い