126
100

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-04-21

近況報告

エンジニア転職成功しました。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

要は

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

ってことですね。

まとめ

  • シングルクォーテーションとダブルクォーテーションでは動作速度が違う
  • シングルクォーテーションの方が速く、ダブルクォーテーションの方が遅い
  • 変数展開を用いる場合はダブルクォーテーションで囲む
  • ""と''をそのまま表示する場合は、外側を''又は""クォーテーションで囲む
126
100
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
126
100