私はPHPの初心者で、これらのコードの違いを学び、知りたいと思っています:
echo "<div>$lang[CATEGORY_NAME]</div>";
echo "<div>" . $lang['CATEGORY_NAME'] . "</div>";
そして、それぞれをいつ使うべきか。
私はPHPの初心者で、これらのコードの違いを学び、知りたいと思っています:
echo "<div>$lang[CATEGORY_NAME]</div>";
echo "<div>" . $lang['CATEGORY_NAME'] . "</div>";
そして、それぞれをいつ使うべきか。
私の答えを3つの部分に分けます。
つまり、次のようなコード
echo "ふー笑";
二重引用符で囲まれた文字列では、PHP インタープリターは文字列内の変数を探し、それらをその値に置き換えます。したがって、次のコード
$lol = "お元気ですか";
echo "foo $lol";
次の出力が生成されます。
お元気ですか
二重引用符で囲まれた文字列では、文字列に変数がなくても、PHP インタープリターは常に変数を探し、その値に置き換えます (これはパフォーマンスの問題を引き起こす可能性がありますが、後で説明します)。
つまり、次のようなコード
$lol = 'こんにちは';
echo '$lol ユーザー';
この場合、PHP インタープリターは文字列をそのまま出力します。したがって、まだ推測していない場合、出力は次のようになります
$lol ユーザー
($lol がその値に置き換えられていないことを確認してください。この場合、$lol はドル記号で始まる単なる文字列です (変数ではありません)。
名前が示すように、文字列を連結するために使用されます。PHP の特殊文字 . (ドット) 文字列の連結に使用されます。たとえば、
$lol = 'こんにちは';
$bar = 'ユーザー';
$lol をエコーします。' ' . $バー . '。大丈夫?';
出力は次のようになります。
こんにちはユーザー。元気ですか?
今答えに。すでに述べたように、二重引用符で囲まれた文字列はその中の変数を検索するため、文字列内で変数を出力する予定がない場合は、単一引用符で囲まれた文字列を使用する方が常に高速です。変数の出力に関しては、二重引用符で囲まれた文字列を使用するのではなく、単一引用符で囲まれた文字列で変数を連結することを常にお勧めします。次の例を参照してください。
echo "こんにちは {$arr['var1']['var2']}。お元気ですか?";
このコードは不明確であり、引用符を含む文字列を出力する場合などに問題が発生する可能性があります。また、指摘したように (Martina のコメントに感謝します)、キーを含む配列を出力する場合は、それらを囲む必要があります{と}なので、二重引用符で囲まれた文字列内の変数は読みにくいです。
このコード
'こんにちは' をエコーします。$arr['var1']['var2'] . '。大丈夫?';
より読みやすく、解析が高速です。
これがあなたの質問に答えることを願っています:)
PHP が二重引用符"
に遭遇すると、文字列スキャンを実行して、内部で (実行時に) 言及されている可能性のある、評価が必要な変数を評価します。とは異なり"
、一重引用符'
を使用すると、PHP はそれ以上評価せずに文字列をそのまま使用するため、高速になります。
この場合、
echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';
<div>
と</div>
タグは PHP からの評価を必要としないため、わずかに優れています。さらに、PHP はコンパイル時にフラグを立てることで最適化を実行できます$lang['CATEGORY_NAME']
(APC のおかげで、コンパイルはスクリプト ファイルの変更後に 1 回だけ実行されます)。
最初のケースでは
echo "<div>$lang[CATEGORY_NAME]</div>";
文字列は実行時に解析されるため、上記のバージョンよりも若干コストが高くなります。
二重コンマ文字列内の変数は変数です。そのため、コードが解析されると、変数として扱われます。後の例では、文字列を $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
何を選択するかはあなた次第です。
echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';
これには、引用符内の変数を検索しないという利点があります (一重引用符を使用しないと、パーサーが文字列内の変数をチェックする必要があります)。