3

PHP がドル記号を含む文字列を置換しない理由がわかりません。次の例を見てください。

<?php
error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
$var = 1024;
$str = '$var';
echo $str, '<br>', "$str";

出力は$var $varです。なぜそうなのですか?最初のパラメーターですべてが明確ですechoが、最後のパラメーターは異なる結果 (1024) になると予想していました。これは、二重引用符で囲まれたドル記号が含まれているため、変数として解釈して 1024 に置き換える必要があるためです。 ?

4

4 に答える 4

11

$strの内容を含む文字列が含まれています"$var"(変数の置換はなく、これらの文字のみ)。一重引用符を使用して作成されたため、変数の置換はありません。

を使用してエコーするecho "$str"と、変数$strはそのコンテンツ、つまり文字列に置き換えられ"$var"、出力になります。

二重引用符で囲まれた文字列の置換は、再帰的に機能しません。したがって 、2番目の外観で$str置き換えるには、最初に二重引用符を使用して作成する必要があります。1024$str

于 2012-09-03T11:23:17.567 に答える
6

"文字列内に変数を配置できます。

'内部のすべてを文字列として受け取ります。

だから、あなたがそうするなら'$var'-それは$内側の文字列です。

"$str"値を取る$strので、印刷します$var

于 2012-09-03T11:24:03.720 に答える
1

$ strには、リテラル文字列$ varが含まれていますが、一重引用符の間にあるため、これまで解釈されることはありません。

それを解釈するには、eval()が必要です

eval($str)

1042を出力します

于 2012-09-03T11:23:36.140 に答える
0

これですか?

<?php
  error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
  $var = 1024;
  $str = $var;
  echo $str, '<br>', "$str";

出力-

1024

1024

ヘヘ

于 2012-09-03T11:23:36.480 に答える