0

私はPHPの初心者で、これらのコードの違いを学び、知りたいと思っています:

echo "<div>$lang[CATEGORY_NAME]</div>";

echo "<div>" . $lang['CATEGORY_NAME'] . "</div>";

そして、それぞれをいつ使うべきか。

4

4 に答える 4

3

私の答えを3つの部分に分けます。

1. 二重引用符文字列

つまり、次のようなコード

echo "ふー笑";

二重引用符で囲まれた文字列では、PHP インタープリターは文字列内の変数を探し、それらをその値に置き換えます。したがって、次のコード

$lol = "お元気ですか";

echo "foo $lol";

次の出力が生成されます。

お元気ですか

二重引用符で囲まれた文字列では、文字列に変数がなくても、PHP インタープリターは常に変数を探し、その値に置き換えます (これはパフォーマンスの問題を引き起こす可能性がありますが、後で説明します)。

2. 一重引用符で囲まれた文字列

つまり、次のようなコード

$lol = 'こんにちは';

echo '$lol ユーザー';

この場合、PHP インタープリターは文字列をそのまま出力します。したがって、まだ推測していない場合、出力は次のようになります

$lol ユーザー

($lol がその値に置き換えられていないことを確認してください。この場合、$lol はドル記号で始まる単なる文字列です (変数ではありません)。

3. 文字列連結

名前が示すように、文字列を連結するために使用されます。PHP の特殊文字 . (ドット) 文字列の連結に使用されます。たとえば、

$lol = 'こんにちは';

$bar = 'ユーザー';

$lol をエコーし​​ます。' ' . $バー . '。大丈夫?';

出力は次のようになります。

こんにちはユーザー。元気ですか?

性能と使用法

今答えに。すでに述べたように、二重引用符で囲まれた文字列はその中の変数を検索するため、文字列内で変数を出力する予定がない場合は、単一引用符で囲まれた文字列を使用する方が常に高速です。変数の出力に関しては、二重引用符で囲まれた文字列を使用するのではなく、単一引用符で囲まれた文字列で変数を連結することを常にお勧めします。次の例を参照してください。

echo "こんにちは {$arr['var1']['var2']}。お元気ですか?";

このコードは不明確であり、引用符を含む文字列を出力する場合などに問題が発生する可能性があります。また、指摘したように (Martina のコメントに感謝します)、キーを含む配列を出力する場合は、それらを囲む必要があります{と}なので、二重引用符で囲まれた文字列内の変数は読みにくいです。

このコード

'こんにちは' をエコーし​​ます。$arr['var1']['var2'] . '。大丈夫?';

より読みやすく、解析が高速です。

これがあなたの質問に答えることを願っています:)

于 2013-03-17T09:55:33.680 に答える
1

PHP が二重引用符"に遭遇すると、文字列スキャンを実行して、内部で (実行時に) 言及されている可能性のある、評価が必要な変数を評価します。とは異なり"、一重引用符'を使用すると、PHP はそれ以上評価せずに文字列をそのまま使用するため、高速になります。

この場合、

echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';

<div></div>タグは PHP からの評価を必要としないため、わずかに優れています。さらに、PHP はコンパイル時にフラグを立てることで最適化を実行できます$lang['CATEGORY_NAME'](APC のおかげで、コンパイルはスクリプト ファイルの変更後に 1 回だけ実行されます)。

最初のケースでは

echo "<div>$lang[CATEGORY_NAME]</div>";

文字列は実行時に解析されるため、上記のバージョンよりも若干コストが高くなります。

于 2013-03-17T09:54:07.393 に答える
1

二重コンマ文字列内の変数は変数です。そのため、コードが解析されると、変数として扱われます。後の例では、文字列を $variable と連結しています。後者の方法を使用する必要があります。これは、明確な読み取りが可能で、コードの解析にかかる時間が短いためです。もう 1 つのことは、後の例では 1 つのカンマを使用し、最初の例では 2 つのカンマを使用できることです。ただし、$variables を文字列から分離し、concat を使用することをお勧めします。

変数付きのシングルカンマ

例 :

echo '<div>$lang[CATEGORY_NAME]</div>';

出力

<div>$lang[CATEGORY_NAME]</div>

連結付きのシングルカンマ

echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';

出力

Category_name // whatever

変数付きダブルカンマ

例 :

echo "<div>$lang[CATEGORY_NAME]</div>";//parser will search for variable inside string

出力

Category_name // whatever

連結付きダブルカンマ

echo "<div>" . $lang['CATEGORY_NAME'] . "</div>";

出力

Category_name // whatever

何を選択するかはあなた次第です。

于 2013-03-17T09:47:16.857 に答える
1
echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';

これには、引用符内の変数を検索しないという利点があります (一重引用符を使用しないと、パーサーが文字列内の変数をチェックする必要があります)。

于 2013-03-17T09:50:44.103 に答える