我想,當知道我爲什麼要使用{$ VAR}
echo "This is a test using {$var}";
當(爲什麼)我應該用簡單的形式是$ var
我想,當知道我爲什麼要使用{$ VAR}
echo "This is a test using {$var}";
當(爲什麼)我應該用簡單的形式是$ var
你會使用後者當a)不訪問該值的對象或數組時,以及b)沒有字符跟隨可能被解釋爲其一部分的變量名稱。
如果你寫
回聲「這是使用$瓦爾測試」
你沒有得到的結果文本$ VAR的內容。
如果你寫
回聲 「這是使用{$ VAR}個測試」;
一切都會好的。
P.S.它只適用於「」,但不適用於「」。
回聲「這是一個使用$ vars的測試」將返回正確的 – 2011-05-24 14:20:23
如果$ var =「bla」將輸出「這是一個使用blas測試」,所以我認爲你錯了。 – sica07 2011-05-24 14:23:54
@ sica07第一種情況下的$ vars沒有定義,所以它會拋出一個PHP Notice:Undefined variable:vars。但是如果你已經定義了它,它將在雙引號中回顯。 {$ var}確保定義$ var,就像分離需要組合的變量和字符串一樣。 – 2011-05-24 17:58:01
http://php.net/manual/en/language.variables.variable.php
爲了使用可變的變量與數組,必須解決一個 模糊問題。也就是說,如果你寫入$$ a [1],那麼解析器需要 知道你是否打算使用$ a [1]作爲 變量,或者如果你想$$ a作爲 變量,然後[ 1]指數從 那個變量。解決此歧義的 的語法是:第一種情況爲$ {$ a [1]} ,第二種情況爲$ {$ a} [1]爲 。
的支架可以使您免去歧義在某些特殊情況下PHP解析器。 就你而言,它們是等價的。
但考慮這一個:
$foobar = 'hello';
$foo = 'foo';
echo "${$foo . 'bar'}"; // hello
如果沒有括號,你不會得到預期的結果:
echo "$$foo . 'bar'"; // $foo . 'bar'
爲了清楚起見,我會但強烈反對這種語法。
{}
表示法也適用於在字符串中嵌入多維數組。
例如
$array[1][2] = "square";
$text = "This $array[1][2] has two dimensions";
會被解析爲
$text = "This " . $array[1] . "[2] has two dimensions";
,你會用文字
This Array[2] has two dimensions
結束了,但如果你做
$text = "This {$array[1][2]} has two dimensions";
你最終的預計
This square has two dimensions.
謝謝你的明確解釋 – sica07 2011-05-24 14:51:45
我在內部字符串中儘可能經常使用{} – 2011-05-24 14:25:13
[PHP手冊頁](http://php.net/manual/en/language.types.string.php#language.types.string.parsing。複雜) – 2011-05-24 14:16:34