2011-05-24 70 views
3

我想,當知道我爲什麼要使用{$ VAR}

echo "This is a test using {$var}"; 

當(爲什麼)我應該用簡單的形式是$ var

+0

我在內部字符串中儘可能經常使用{} – 2011-05-24 14:25:13

+1

[PHP手冊頁](http://php.net/manual/en/language.types.string.php#language.types.string.parsing。複雜) – 2011-05-24 14:16:34

回答

4

你會使用後者當a)不訪問該值的對象或數組時,以及b)沒有字符跟隨可能被解釋爲其一部分的變量名稱。

1

如果你寫

回聲「這是使用$瓦爾測試」

你沒有得到的結果文本$ VAR的內容。

如果你寫

回聲 「這是使用{$ VAR}個測試」;

一切都會好的。

P.S.它只適用於「」,但不適用於「」。

+0

回聲「這是一個使用$ vars的測試」將返回正確的 – 2011-05-24 14:20:23

+0

如果$ var =「bla」將輸出「這是一個使用blas測試」,所以我認爲你錯了。 – sica07 2011-05-24 14:23:54

+0

@ sica07第一種情況下的$ vars沒有定義,所以它會拋出一個PHP Notice:Undefined variable:vars。但是如果你已經定義了它,它將在雙引號中回顯。 {$ var}確保定義$ var,就像分離需要組合的變量和字符串一樣。 – 2011-05-24 17:58:01

4

http://php.net/manual/en/language.variables.variable.php

爲了使用可變的變量與數組,必須解決一個 模糊問題。也就是說,如果你寫入$$ a [1],那麼解析器需要 知道你是否打算使用$ a [1]作爲 變量,或者如果你想$$ a作爲 變量,然後[ 1]指數從 那個變量。解決此歧義的 的語法是:第一種情況爲$ {$ a [1]} ,第二種情況爲$ {$ a} [1]爲 。

3

的支架可以使您免去歧義在某些特殊情況下PHP解析器。 就你而言,它們是等價的。

但考慮這一個:

$foobar = 'hello'; 
$foo = 'foo'; 
echo "${$foo . 'bar'}"; // hello 

如果沒有括號,你不會得到預期的結果:

echo "$$foo . 'bar'"; // $foo . 'bar' 

爲了清楚起見,我會但強烈反對這種語法。

1

{}表示法也適用於在字符串中嵌入多維數組。

例如

$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. 
+0

謝謝你的明確解釋 – sica07 2011-05-24 14:51:45

相關問題