PHPのシングルクォート文字列とダブルクォート文字列の違いは何ですか?

821
rob waminal 2010-08-10 19:12.

文字列が一重引用符で囲まれ、場合によっては二重引用符で囲まれているPHPのコードが表示される理由が少しわかりません。

.NETまたはC言語では、一重引用符で囲まれている場合、それは文字列ではなく文字であることを知っています。

10 answers

1119
Peter Ajtai 2010-08-10 19:28.

PHP文字列は、 2つの方法だけでなく、 4つの方法で指定できます。

  1. 一重引用符で囲まれた文字列は、ほぼ完全に「現状のまま」表示されます。変数とほとんどのエスケープシーケンスは解釈されません。例外は、リテラルの一重引用符\'を表示するにはバックスラッシュでエスケープでき、バックスラッシュを表示するには別のバックスラッシュでエスケープできることです\\したがって、一重引用符で囲まれた文字列も解析されます)。
  2. 二重引用符の文字列には、エスケープ文字のホスト(一部の正規表現を含む)が表示され、文字列内の変数が評価されます。ここで重要な点は、中括弧を使用して、評価する変数の名前を分離できることです。たとえば、変数が$typeあり、を実行したいとしますecho "The $types are"。それは変数を探します$types。この使用法を回避echo "The {$type}s are"するには、ドル記号の前後に左中括弧を付けることができます。見てみましょう解析する文字列を配列変数と、そのような使用方法を参照してください。
  3. ヒアドキュメント文字列構文は、二重引用符で囲まれた文字列のように機能します。で始まり<<<ます。この演算子の後に、識別子が提供され、次に改行が提供されます。文字列自体が続き、次に同じ識別子が続き、引用を閉じます。この構文では、引用符をエスケープする必要はありません。
  4. Nowdoc(PHP 5.3.0以降)の文字列構文は、基本的に一重引用符で囲まれた文字列のように機能します。違いは、一重引用符や円記号でさえエスケープする必要がないことです。nowdocは<<<、ヒアドキュメントに使用されるのと同じシーケンスで識別されますが、後続の識別子は一重引用符で囲まれます<<<'EOT'nowdocでは解析は行われません。

注:一重引用符内の一重引用符と二重引用符内の二重引用符はエスケープする必要があります。

$string = 'He said "What\'s up?"'; $string = "He said \"What's up?\"";

速度:
一重引用符が二重引用符よりも速いことをあまり重視しません。特定の状況ではおそらく高速です。これは、PHP 4.3以降、一重引用符と二重引用符が基本的に同等に高速である1つの方法を説明する記事です(Useless Optimizations下部のセクションC)。また、このベンチマークページには、一重引用符と二重引用符の比較があります。ほとんどの比較は同じです。二重引用符が一重引用符よりも遅い比較が1つあります。

221
Dani 2010-08-10 19:19.

物事は二重引用符で評価されますが、一重引用符では評価されません。

$s = "dollars"; echo 'This costs a lot of $s.'; // This costs a lot of $s. echo "This costs a lot of $s."; // This costs a lot of dollars.
63
Janak Kanani 2014-04-12 17:54.

' 一重引用符

文字列を指定する最も簡単な方法は、文字列を一重引用符で囲むことです。一般に一重引用符の方が高速で、内部で引用されているものはすべてプレーン文字列として扱われます。

例:

echo 'Start with a simple string';
echo 'String\'s apostrophe';
echo 'String with a php variable'.$name;

" 二重引用符

PHPで二重引用符を使用して、コードを区切るためにピリオドを使用する{}必要がないようにします(注:連結(.)演算子を使用しない場合は、中括弧を使用して変数を含めます)。

例:

echo "Start with a simple string";
echo "String's apostrophe";
echo "String with a php variable {$name}";

PHPに一重引用符と二重引用符のパフォーマンス上の利点はありますか?

はい。一重引用符を使用する方が少し高速です。

PHPは、一重引用符の中にあるものを解釈するために追加の処理を使用しません。二重引用符を使用する場合、PHPは文字列内に変数があるかどうかを確認するために解析する必要があります。

40
Borealid 2010-08-10 19:15.

一重引用符で囲まれた文字列には、解釈される変数が含まれていません。二重引用符で囲まれた文字列はそうです。

また、二重引用符で囲まれた文字列には円記号なしのアポストロフィを含めることができますが、一重引用符で囲まれた文字列にはエスケープされていない引用符を含めることができます。

一重引用符で囲まれた文字列は、解析する必要がないため、実行時に高速になります。

32
Bang Dao 2010-08-10 19:23.

PHPでは、'my name'"my name"は両方とも文字列です。詳細については、PHPのマニュアルを参照してください。

あなたが知っておくべきことは

$a = 'name'; $b = "my $a"; == 'my name' $c = 'my $a'; != 'my name'

PHPで、人々は一定の文字列を定義するために単一引用符を使用して、のような'a''my name''abc xyz'文字列を定義するために二重引用符を使用している間、のような識別子を含みます。"a $b $c $d"

そして他のことは、

echo 'my name';

より速い

echo "my name";

だが

echo 'my ' . $a;

より遅い

echo "my $a";

これは、他の文字列の使用にも当てはまります。

20
Rabindra Nath 2017-03-03 00:34.

シングル、ダブル、ヒアドキュメント、およびナウドックの引用符の例

<?php

    $fname = "David"; // Single quotes echo 'My name is $fname.'; // My name is $fname. // Double quotes echo "My name is $fname."; // My name is David.

    // Curly braces to isolate the name of the variable
    echo "My name is {$fname}."; // My name is David. // Example of heredoc echo $foo = <<<abc
    My name is {$fname} abc; // Example of nowdoc echo <<< 'abc' My name is "$name".
        Now, I am printing some
    abc;

?>
16
Maulik Bhojani 2014-02-06 23:19.

PHPでは、一重引用符のテキストは文字列値と見なされ、二重引用符のテキストは変数の値を置き換えて処理することで変数を解析します。

$test = "variable"; echo "Hello Mr $test"; // the output would be: Hello Mr variable
echo 'Hello Mr $test'; // the output would be: Hello Mr $test

ここで、二重引用符は値を解析し、一重引用符は($test変数を解析せずに)文字列値と見なされます。

12
wallyk 2010-08-10 19:15.

両方の種類の囲まれた文字は文字列です。1つのタイプの引用は、他のタイプの引用を囲むために便利に使用されます。"'"および'"'。引用符のタイプの最大の違いは、囲まれた識別子参照が二重引用符の内側に置き換えられますが、一重引用符の内側には置き換えられないことです。

3
Hamza 2019-12-11 03:04.

PHPで一重引用符を使用する場合と二重引用符を使用する場合の違いは、echoステートメントで一重引用符を使用すると、文字列として扱われることです。...ただし、変数名を二重引用符で囲むと、その変数の値が文字列とともに出力されます。

0
Takit Isy 2018-04-10 03:09.

私は少し話題から外れていると言う人もいるかもしれませんが、とにかくここにあります:

あなたは必ずしも理由の間、あなたの文字列の内容を選択する必要はありません。
alert("It's \"game\" time.");またはalert('It\'s "game" time.');

あなたは英語の引用符の使用、およびアポストロフィの正しい文字に精通している場合、あなたはどちらか、二重引用符または一重引用符を使用し、それがないので問題はもうすることができます
alert("It’s “game” time.");し、alert('It’s “game” time.');

もちろん、必要に応じて変数を追加することもできます。二重引用符で囲んだ場合にのみ評価されることを忘れないでください。

Related questions

MORE COOL STUFF

Reba McEntire は、彼女が息子の Shelby Blackstock と共有する「楽しい」クリスマスの伝統を明らかにしました:「私たちはたくさん笑います」

Reba McEntire は、彼女が息子の Shelby Blackstock と共有する「楽しい」クリスマスの伝統を明らかにしました:「私たちはたくさん笑います」

Reba McEntire が息子の Shelby Blackstock と共有しているクリスマスの伝統について学びましょう。

メーガン・マークルは、自然な髪のスタイリングをめぐってマライア・キャリーと結ばれました

メーガン・マークルは、自然な髪のスタイリングをめぐってマライア・キャリーと結ばれました

メーガン・マークルとマライア・キャリーが自然な髪の上でどのように結合したかについて、メーガンの「アーキタイプ」ポッドキャストのエピソードで学びましょう.

ハリー王子は家族との関係を修復できるという「希望を持っている」:「彼は父親と兄弟を愛している」

ハリー王子は家族との関係を修復できるという「希望を持っている」:「彼は父親と兄弟を愛している」

ハリー王子が家族、特にチャールズ王とウィリアム王子との関係について望んでいると主張したある情報源を発見してください。

ワイノナ・ジャッドは、パニックに陥った休暇の瞬間に、彼女がジャッド家の家長であることを認識しました

ワイノナ・ジャッドは、パニックに陥った休暇の瞬間に、彼女がジャッド家の家長であることを認識しました

ワイノナ・ジャッドが、母親のナオミ・ジャッドが亡くなってから初めての感謝祭のお祝いを主催しているときに、彼女が今では家長であることをどのように認識したかを学びましょう.

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セント ヘレナ島のジェイコブズ ラダーは 699 段の真っ直ぐ上る階段で、頂上に到達すると証明書が発行されるほどの難易度です。

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

スタートレックの50周年を称えるための最良の方法

スタートレックの50周年を称えるための最良の方法

来年は、スペースオペラの最も壮大で野心的なメディアシリーズの50周年を迎えます。しかし、スタートレックはその誇り高い遺産に沿って50歳の誕生日を迎えますか?スタートレックの誕生日を祝う方法はたくさんあります。

更新:合法的な大統領候補は数百万人を怒らせ、美しい女性は苦しむ

更新:合法的な大統領候補は数百万人を怒らせ、美しい女性は苦しむ

(画像提供:ゲッティイメージズ)ドナルド・トランプは、アメリカ合衆国大統領の立候補者となる比類のない外交的洞察力を示し、何百万人もの人々を怒らせ、彼の時代遅れの客体化に対する評価の主要な情報源を失いました。彼が立候補を発表し終える前にパレード。トランプ氏は演説の中で、この国で最も高い役職に選出された場合、米国との南の国境に壁を建設すると述べた一連の声明を発表した。

インターネット上で最も愚かな親ロシアのデマ

インターネット上で最も愚かな親ロシアのデマ

David L. Sternは、ウクライナのキエフを拠点とするフリーランスのライターです。

ディズニーフリークは今、独自の出会い系サイトを持っています

ディズニーフリークは今、独自の出会い系サイトを持っています

オンラインデートに関しては、船長、ベーコン愛好家、ポットヘッド向けに作られたサイトなど、長年にわたって選択できるニッチなサイトがたくさんあります。今、ディズニーファンは彼ら自身のマッチメイキングサイトを通して愛を見つけることができます。

米国のフィギュア スケートは、チーム イベントでの最終決定の欠如に「苛立ち」、公正な裁定を求める

米国のフィギュア スケートは、チーム イベントでの最終決定の欠如に「苛立ち」、公正な裁定を求める

ロシアのフィギュアスケーター、カミラ・バリエバが関与したドーピング事件が整理されているため、チームは2022年北京冬季オリンピックで獲得したメダルを待っています。

Amazonの買い物客は、わずか10ドルのシルクの枕カバーのおかげで、「甘やかされた赤ちゃんのように」眠れると言っています

Amazonの買い物客は、わずか10ドルのシルクの枕カバーのおかげで、「甘やかされた赤ちゃんのように」眠れると言っています

何千人ものAmazonの買い物客がMulberry Silk Pillowcaseを推奨しており、現在販売中. シルクの枕カバーにはいくつかの色があり、髪を柔らかく肌を透明に保ちます。Amazonで最大46%オフになっている間にシルクの枕カバーを購入してください

パデュー大学の教授が覚醒剤を扱った疑いで逮捕され、女性に性的好意を抱かせる

パデュー大学の教授が覚醒剤を扱った疑いで逮捕され、女性に性的好意を抱かせる

ラファイエット警察署は、「不審な男性が女性に近づいた」という複数の苦情を受けて、12 月にパデュー大学の教授の捜査を開始しました。

コンセプト ドリフト: AI にとって世界の変化は速すぎる

コンセプト ドリフト: AI にとって世界の変化は速すぎる

私たちの周りの世界と同じように、言語は常に変化しています。以前の時代では、言語の変化は数年または数十年にわたって発生していましたが、現在では数日または数時間で変化する可能性があります。

SF攻撃で91歳のアジア人女性が殴られ、コンクリートに叩きつけられた

犯罪擁護派のオークランドが暴力犯罪者のロミオ・ロレンゾ・パーハムを釈放

SF攻撃で91歳のアジア人女性が殴られ、コンクリートに叩きつけられた

認知症を患っている 91 歳のアジア人女性が最近、47 番街のアウター サンセット地区でロメオ ロレンゾ パーハムに襲われました。伝えられるところによると、被害者はサンフランシスコの通りを歩いていたところ、容疑者に近づき、攻撃を受け、暴行を受けました。

ℝ

“And a river went out of Eden to water the garden, and from thence it was parted and became into four heads” Genesis 2:10. ? The heart is located in the middle of the thoracic cavity, pointing eastward.

メリック・ガーランドはアメリカに失敗しましたか?

バイデン大統領の任期の半分以上です。メリック・ガーランドは何を待っていますか?

メリック・ガーランドはアメリカに失敗しましたか?

人々にチャンスを与えることは、人生で少し遅すぎると私は信じています。寛大に。

Language