2012-02-29 7 views
0

私は少し

$hello = "hello"; 
echo "Say $hello"; 
echo "Say {$hello}"; 
echo "Say ${hello}"; 

と混同だと出力が同じSay helloです。 {$hello}${hello}はいつ使用しますか?一重引用符では使用できないのはなぜですか?

+2

誰かが行って[これについてのマニュアルを書きました](http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex)。あなたはそれを読みました? –

+0

ありがとうございます@LinusKleen。今私はそれが 'curly'であることを知っている –

答えて

3
$animal = 'cat'; 
echo "I have 14 $animals"; 

これは、このようにあなたは、単一の原因変数/式の中で

echo "I have 14 ${animal}s"; 

または

echo "I have 14 {$animal}s"; 

を "エスケープ" し、問題につながる可能性が置換決してました。

0

一重引用符で囲まれた文字列は、PHPで変数を展開することはありません。参照:

http://php.net/manual/en/language.types.string.php

PHPの文字列フォーマットの詳細については。合計で4つあります(PHP 5.3で導入されたnowdocを含む)。二重引用符とheredoc文字列形式のみが変数を展開します。 http://www.php.net/manual/en/language.types.string.php#language.types.string.parsingによると

0

、 は、これは単純な構文です:

echo "Say ${hello}"; 

、これは巻き毛の構文は次のとおりです。

echo "Say {$hello}"; 

なぜそれら両方の出力と同じでしょうか? PHPでは、必要なあらゆる場所で変数変数を使用することができます。たとえば:

$var = 'somevar'; 
$bar = 'var'; 
echo $$bar; // "somevar", simple variable variable 
echo ${$bar}; // "somevar", complex syntax 
echo ${bar}; // "var", because {bar} treated as a string constant: 
      // Notice: Use of undefined constant bar - assumed 'bar' 

ので、変数の変数を使用して構文${hello}は単に$helloに翻訳します。

関連する問題