#近況報告
エンジニア転職成功しました。YouTubeもはじめました。
こんにちは。業務でPHPを扱いCRMをメインに開発しているYUUKIです。
PHPで書かれたコードを見ていると、文字列を囲む際に
- ダブルクォーテーション("")
- シングルクォーテーション('')
の2つを使っているパターンがありますね。
この2つの違いを明確に理解するために、
PHPにおけるダブルクォーテーションとシングルクォーテーションの違いを解説します。
##文字列出力では同じ内容が出力されるが、動作速度が違う
例えば「この野菜はトマトです」という文字列を出力する場合
<?php
// ダブルクォーテーション
echo "この野菜はトマトです";
echo '<br>';
// シングルクォーテーション
echo 'この野菜はトマトです';
出力結果
出力される内容は同じですが、出来ることに差があります。
例えば、ダブルクォーテーションで囲んだ文中に変数を組み込むと、変数のデータが表示される(変数展開を行える)点が、シングルクォーテーションと異なります。
また、変数の変換処理を行うため、動作処理速度がシングルクォーテーションと比べると遅くなります。
動作処理速度には
- シングルクォーテーション>ダブルクォーテーション
- 約1.2倍〜2倍
の差があるようです。
##変数展開の場合はダブルクォーテーション""を使う
変数展開とは、文字列の中に変数の値を組み込むことを言いますが、
echoで出力時はダブルクォーテーション””を使わないと変数展開が適用されません。
<?php
$testDouble = "tomato";
$testSingle = "paseri";
// ""で変数の中身を表示(変数展開を適用する)
echo "この野菜は{$testDouble}です。";
echo '<br>';
// ''で変数名をそのまま表示(変数展開が適用されない)
echo 'この野菜は{$testSingle}です。';
echo '<br>';
出力結果
要は、
- 変数の中身を表示したい場合はダブルクォーテーションを使う
- 変数名を直接表示したい場合はシングルクォーテーションを使う
ってことですね。
##ダブルクォーテーション""とシングルクオーテーション""をそのまま表示する
""と''を文字列としてそのまま出力したい場合は、変数に文字列を以下のように代入します。
<?php
$testDouble = '"tomato"';
$testSingle = "'paseri'";
// ""をそのまま表示
echo $testDouble;
echo '<br>';
// ''をそのまま表示
echo $testSingle;
echo '<br>';
出力結果
要は
- ダブルクォーテーションを表示したい場合は、変数代入時に''で囲む
- シングルクォーテーションを表示したい場合は、変数代入時に""で囲む
ってことですね。
##まとめ
- シングルクォーテーションとダブルクォーテーションでは動作速度が違う
- シングルクォーテーションの方が速く、ダブルクォーテーションの方が遅い
- 変数展開を用いる場合はダブルクォーテーションで囲む
- ""と''をそのまま表示する場合は、外側を''又は""クォーテーションで囲む