双美元符号php

时间:2010-11-14 20:19:47

标签: php syntax

  

可能重复:
  What does $$ (dollar dollar or double dollar) mean in PHP?

我发现自己在我的一个控制器中使用了这种代码:

foreach(get_object_vars($this->view) as $property=>$value){
   $$property = $value;
}

使用$$属性将视图属性“本地化”为简单的$变量是否有任何问题?

编辑:

我应该补充一点,这个代码是在特定于视图的方法的范围内运行的,因此没有覆盖局部变量的问题。这是为了转移你们中的一些人指出覆盖局部变量的问题。

4 个答案:

答案 0 :(得分:17)

PHP中的$$问题是您创建了未知的变量名称,这可能会覆盖您已经使用的变量名称。它是细微编程错误的来源,通常不应该使用。

答案 1 :(得分:5)

好吧,你可以使用extract()功能。此片段:get_object_vars($this->view)表示您应该使用一些数组来存储这些变量,而不是对象。

答案 2 :(得分:1)

不,这是做到这一点的方式,也是唯一可以解决的问题。虽然我的问题是问你为什么要这样做而不是使用对象变量。

答案 3 :(得分:-1)

接受的答案是错误的! 双美元不是问题的原因,不应该被认为是这样的! 双美元语法实际上是一个极好的PHP功能,在许多情况下都很有用!

如果您担心使用它可能会覆盖其他变量,那么这意味着您编写的代码很差!无论如何,这种语法被更有经验的程序员使用,所以初学者应该避免使用它,直到对他们正在做的事情更加确定。

在某些情况下,这非常有用的是根据其他变量,动态变量,不可知变量等的值循环变量。

再次,让我接近说,双美元是一个强大的功能,应该这样对待!强大的力量带来了巨大的责任!