検索

ホームページ  >  に質問  >  本文

PHP における一重引用符と二重引用符の文字列の違いは何ですか?

<p>PHP で文字列が一重引用符で囲まれ、場合によっては二重引用符で囲まれているコードがいくつかあるのはなぜなのか少し混乱しています。 </p> <p>私が知っているのは、.NET または C では、一重引用符で囲まれている場合、それが文字列ではなく文字であることを意味するということだけです。 </p>
P粉773659687P粉773659687448日前791

全員に返信(2)返信します

  • P粉458725040

    P粉4587250402023-08-24 13:14:41

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

    リーリー

    返事
    0
  • P粉323374878

    P粉3233748782023-08-24 10:55:52

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

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

    コメント: 一重引用符内の単一引用符および二重引用符内の二重引用符はエスケープする必要があります:

    リーリー ######スピード:###### ###変わりはない###。

    信頼できる記事 をお読みください。PHP コア開発者がこの問題について語ります。テストに関しては、決して当たり前のことだと思ってはいけません。信頼できるテストを作成し、特にその結果を解釈するには、多くの知識と経験が必要であることを理解することが重要です。これは、ほとんどのテストが偽物であることを意味します。たとえば、次のようなコードです
    リーリー 引用符で囲まれた文字列は、スクリプト全体とともに 1 回だけ解析され、オペコードに変換されます。その後、100万回実行されます。したがって、解析以外のすべてを測定します。これは氷山の一角にすぎません。このようなナノベンチマークでは、何らかの破壊的な副作用によって損なわれない信頼性の高いテストを作成することはほぼ不可能です。

    返事
    0
  • キャンセル返事