PHP では、一重引用符と二重引用符で囲まれた文字列の違いは何ですか?
P粉604507867
P粉604507867 2023-08-18 11:45:01
0
2
691
<p>PHP では、コード内の一部の文字列が一重引用符を使用し、一部の文字列が二重引用符を使用する理由が少しわかりません。 </p> <p>私が知っているのは、.NET または C で一重引用符を使用すると、それが文字列ではなく文字であることを意味するということだけです。 </p>
P粉604507867
P粉604507867

全員に返信(2)
P粉311089279

二重引用符で囲まれた内容は解析されますが、一重引用符で囲まれた内容は解析されません:

リーリー
いいねを押す +0
P粉741678385

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

  1. 一重引用符で囲まれた文字列 は、ほぼそのまま表示されます。変数とほとんどのエスケープ シーケンスは解釈されません。例外は、一重引用符を表示するにはバックスラッシュ \' でエスケープし、バックスラッシュを表示するには別のバックスラッシュ \\ Escape (so,はい、一重引用符で囲まれた文字列も解析されます)。
  2. 二重引用符で囲まれた文字列一連のエスケープ シーケンス (一部の正規表現を含む) が表示され、文字列内の変数が評価されます。重要な点は、 中括弧を使用して、値が必要な変数 の名前を分離できることです。たとえば、変数 $type があり、「The $types are」エコーしたいとします。これにより、変数 $types が検索されます。この問題を解決するには、echo "The {$type}s are" を使用します。配列変数などの使用方法については、文字列解析をご覧ください。
  3. Heredoc文字列構文は二重引用符で囲まれた文字列と似ています。 <<< で始まります。この演算子の後に、識別子を指定し、その後に改行文字を続けます。次に、文字列自体と同じ識別子が再度使用されて参照が閉じられます。この構文では、引用符をエスケープする必要はありません。
  4. Nowdoc (PHP 5.3.0 以降) 文字列構文は基本的に一重引用符で囲まれた文字列と同じです。違いは、一重引用符やバックスラッシュをエスケープする必要さえないことです。 Nowdoc はヒアドキュメントと同じ <<< シーケンスを使用しますが、次の識別子は <<<'EOT' のように一重引用符で囲まれます。 Nowdoc では解析は行われません。
######知らせ:### 一重引用符内の単一引用符および二重引用符内の二重引用符はエスケープする必要があります:

リーリー ######スピード:###### 変わりはない###。 コア PHP 開発者による 信頼できる記事

をお読みください。テストに関しては、それを当然のことと考えてはいけません。信頼できるテストを作成し、その結果を解釈するには、多くの知識と経験が必要であることを理解することが重要です。これは、ほとんどのテストが偽物であることを意味します。たとえば、次のようなコードです

リーリー 引用符で囲まれた文字列は、スクリプト全体とともに 1 回だけ解析され、オペコードに変換されます。それからそれを100万回繰り返します。したがって、測定するのは解析ではありません。これは氷山の一角にすぎません。このようなナノベンチマークでは、干渉する副作用によって損なわれない信頼できるテストを作成することはほぼ不可能です。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート