Edited at

PHPのダブルクォーテーションとシングルクォーテーションの違いを理解する

こんにちは。業務で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>';

出力結果

要は


  • ダブルクォーテーションを表示したい場合は、変数代入時に''で囲む

  • シングルクォーテーションを表示したい場合は、変数代入時に""で囲む

ってことですね。


まとめ


  • シングルクォーテーションとダブルクォーテーションでは動作速度が違う

  • シングルクォーテーションの方が速く、ダブルクォーテーションの方が遅い

  • 変数展開を用いる場合はダブルクォーテーションで囲む

  • ""と''をそのまま表示する場合は、外側を''又は""クォーテーションで囲む