2016-05-13 86 views
10

有時您需要向PHP表明什麼是變量名稱。我發現一位同事和我的做法略有不同。 假設你有一個變量$foo,想要輸出與_constant_string附加 我一直在使用

return "<input type='hidden' name='${foo}_constant_string' value='true' />"; 

,而我的同事正在使用

return "<input type='hidden' name='{$foo}_constant_string' value='true' />"; 

(略做作例如簡化它)。

我的快速測試沒有發現明顯的差異,但我很好奇:是否有區別?是否有理由相對於另一方偏好?

編輯: 我上面的例子使用了字符串,但我的問題更一般 - 我應該明確地這樣說。我知道你可以用花括號來逃避,但沒有找到具體的點,如果(在任何情況下)使用它們的兩種方式之間存在差異。我得到了答案:沒有字符串(這是「重複」的職位是關於什麼),但是爲數組和對象(謝謝@dragoste)。

+0

我不知道爲什麼的問題是標記爲重複。也許那個人沒有讀過標題。 – revo

回答

7

似乎,有任何的PHP版本沒有任何區別

$foo = 'test';  
    var_dump("$foo"); 
    var_dump("{$foo}"); 
    var_dump("${foo}"); 

測試:https://3v4l.org/vMO2D

反正我不喜歡"{$foo}",因爲我認爲這是更具可讀性和在其他語法不很多其他的情況下工作。

作爲一個例子,讓我們嘗試用對象屬性訪問:

var_dump("$foo->bar"); //syntax error 
var_dump("{$foo->bar}"); // works great 
var_dump("${foo->bar}"); //syntax error 

相同的情況下,是陣列。

http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex

7

不,沒有什麼不同。

// Works, outputs: This is fantastic 
echo "This is {$great}"; 
echo "This is ${great}"; 

Php manual

Answer on stackoverflow

另一種方式使用它的變量:

$foo = 'test'; 
$test = 'foo'; 
var_dump("{${$foo}}"); //string(3) "test" 

或者數組:

$foo = ['foo','test']; 
var_dump("{$foo[0]}"); //string(3) "foo" 
var_dump("${foo[1]}"); //string(3) "test" 
0

有下面的語句沒有區別 -

echo "This is {$great}"; 
echo "This is ${great}"; 

兩個語句的輸出將被same.Please檢查以下示例 -

$great = 'answer'; 
echo "This is {$great}"."\n"; 
echo "This is ${great}"; 

Output:- 

This is answer 
This is answer 
相關問題