82
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

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

近況報告

エンジニア転職成功しました。YouTubeもはじめました。

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

要は

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

ってことですね。

まとめ

  • シングルクォーテーションとダブルクォーテーションでは動作速度が違う
  • シングルクォーテーションの方が速く、ダブルクォーテーションの方が遅い
  • 変数展開を用いる場合はダブルクォーテーションで囲む
  • ""と''をそのまま表示する場合は、外側を''又は""クォーテーションで囲む
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
Sign upLogin
82
Help us understand the problem. What are the problem?