Help us understand the problem. What is going on with this article?

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

ご報告:技術ブログ始めました

都内エンジニアメンバーと技術ブログ始めました

隔週で開催している勉強会の情報も共有しています。

興味ある方は覗いてみてください。

こんにちは。業務でPHPを扱いCRMをメインに開発しているYUUKIです。

PHPで書かれたコードを見ていると、文字列を囲む際に

  • ダブルクォーテーション("")
  • シングルクォーテーション('')

の2つを使っているパターンがありますね。

この2つの違いを明確に理解するために、
PHPにおけるダブルクォーテーションとシングルクォーテーションの違いを解説します。

文字列出力では同じ内容が出力されるが、動作速度が違う

例えば「この野菜はトマトです」という文字列を出力する場合

<?php

// ダブルクォーテーション
echo "この野菜はトマトです";
echo '<br>';

// シングルクォーテーション
echo 'この野菜はトマトです';


出力結果

スクリーンショット 2019-04-21 16.09.00.png

出力される内容は同じですが、出来ることに差があります。

例えば、ダブルクォーテーションで囲んだ文中に変数を組み込むと、変数のデータが表示される(変数展開を行える)点が、シングルクォーテーションと異なります。

また、変数の変換処理を行うため、動作処理速度がシングルクォーテーションと比べると遅くなります。

動作処理速度には

  • シングルクォーテーション>ダブルクォーテーション
  • 約1.2倍〜2倍

の差があるようです。

変数展開の場合はダブルクォーテーション""を使う

変数展開とは、文字列の中に変数の値を組み込むことを言いますが、
echoで出力時はダブルクォーテーション””を使わないと変数展開が適用されません。

<?php

$testDouble = "tomato";
$testSingle = "paseri";

// ""で変数の中身を表示(変数展開を適用する)
echo "この野菜は{$testDouble}です。";
echo '<br>';

// ''で変数名をそのまま表示(変数展開が適用されない)
echo 'この野菜は{$testSingle}です。';
echo '<br>';

出力結果

スクリーンショット 2019-04-21 17.28.52.png

要は、

  • 変数の中身を表示したい場合はダブルクォーテーションを使う
  • 変数名を直接表示したい場合はシングルクォーテーションを使う

ってことですね。

ダブルクォーテーション""とシングルクオーテーション""をそのまま表示する

""と''を文字列としてそのまま出力したい場合は、変数に文字列を以下のように代入します。

<?php

$testDouble = '"tomato"';
$testSingle = "'paseri'";

// ""をそのまま表示
echo $testDouble;
echo '<br>';

// ''をそのまま表示
echo $testSingle;
echo '<br>';

出力結果

スクリーンショット 2019-04-21 17.30.01.png

要は

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

ってことですね。

まとめ

  • シングルクォーテーションとダブルクォーテーションでは動作速度が違う
  • シングルクォーテーションの方が速く、ダブルクォーテーションの方が遅い
  • 変数展開を用いる場合はダブルクォーテーションで囲む
  • ""と''をそのまま表示する場合は、外側を''又は""クォーテーションで囲む
bitcoinjpnnet
PHP/Laravelで開発中のエンジニア。 個人開発が好きです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away