可能重复:
What does $$ (dollar dollar or double dollar) mean in PHP?
我发现自己在我的一个控制器中使用了这种代码:
foreach(get_object_vars($this->view) as $property=>$value){
$$property = $value;
}
使用$$属性将视图属性“本地化”为简单的$变量是否有任何问题?
编辑:
我应该补充一点,这个代码是在特定于视图的方法的范围内运行的,因此没有覆盖局部变量的问题。这是为了转移你们中的一些人指出覆盖局部变量的问题。
答案 0 :(得分:17)
PHP中的$$问题是您创建了未知的变量名称,这可能会覆盖您已经使用的变量名称。它是细微编程错误的来源,通常不应该使用。
答案 1 :(得分:5)
好吧,你可以使用extract()
功能。此片段:get_object_vars($this->view)
表示您应该使用一些数组来存储这些变量,而不是对象。
答案 2 :(得分:1)
不,这是做到这一点的方式,也是唯一可以解决的问题。虽然我的问题是问你为什么要这样做而不是使用对象变量。
答案 3 :(得分:-1)
接受的答案是错误的! 双美元不是问题的原因,不应该被认为是这样的! 双美元语法实际上是一个极好的PHP功能,在许多情况下都很有用!
如果您担心使用它可能会覆盖其他变量,那么这意味着您编写的代码很差!无论如何,这种语法被更有经验的程序员使用,所以初学者应该避免使用它,直到对他们正在做的事情更加确定。
在某些情况下,这非常有用的是根据其他变量,动态变量,不可知变量等的值循环变量。
再次,让我接近说,双美元是一个强大的功能,应该这样对待!强大的力量带来了巨大的责任!