2016-05-13 83 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 
相关问题