“什么是”呢$$&引用;在PHP中

“什么是”呢$$&引用;在PHP中,php,variable-variables,Php,Variable Variables,我看到了这个密码 if (is_null($$textVarName)) { $$textVarName = $_defaultTexts[$type]; } 什么是代码“$$” 它是邪恶的 这将采用$textVarName中的值,并将其用作变量名。例如: $foo = 'hello'; $hello = 'The Output'; echo $$foo; // displays "The Output" 现在,自动地,如果以前的表单有一个名为“username”的字段,那么现在有一个名为$

我看到了这个密码

if (is_null($$textVarName)) {
$$textVarName = $_defaultTexts[$type];
}

什么是代码“$$”

它是邪恶的

这将采用
$textVarName
中的值,并将其用作变量名。例如:

$foo = 'hello';
$hello = 'The Output';
echo $$foo; // displays "The Output"
现在,自动地,如果以前的表单有一个名为“username”的字段,那么现在有一个名为$username的变量,它保存表单中提交的值。 这不是最好或最安全的方法,但当你口袋里装满了钉子时,这是一把非常棒的锤子


这是一种非常糟糕的做法,从未受到鼓励,但我所认识的所有PHP程序员都暗暗喜欢它。

有关参考信息,请参阅:

@VoteyDisciple;这是无止境的吗?我可以要
$$$foo
?还是在两点停?@Beemer:这是无穷无尽的。顺便说一句,尝试比询问和等待答案要快。@zerkms:谢谢你的回答,但是你有没有想到我手头可能没有编译器?@zerkms:Cool link,这正是我问问题的原因。如果我没有问这个问题,我就不会知道这个链接。我要求得到比我刚才要求的更多的东西。谢谢我可以看出这会让人困惑,因此是“邪恶的”,但这是如此优雅。有时这是一个非常有用的特性,需要其他语言中混乱的语法才能完成。与C++中的指针无关,这并没有太大的不同。如果可以的话,这个也可以。如果这是邪恶的,那么C++中的多指针解引用也是邪恶的。嗨,我是cfreak,我是PHP程序员。现在你了解我了。我绝对讨厌它。:-)(当然,我一点也不喜欢PHP,但它能支付账单,所以我就这么做了)尽管这是一种不好的做法。。。我爱死它了!!我曾经在
$\u POST
中有50个条目,为每个条目创建一个变量肯定不是件有趣的事(即使使用Excel之类的工具实现了自动化)。希望我当时知道这个快捷方式。请注意,您可以使用
extract($\u POST,EXTR\u PREFIX\u ALL,“p”)
来实现相同的效果,并使用可变前缀提高安全性。
array\u map
过滤的加分。另外,只写
$\u POST['foo']
有什么不对?除非我有特定的理由对一个变量进行额外的处理,否则我从未觉得必须(手动或其他方式)从
$\u POST
中提取一个变量
foreach($_POST as $key=>$value)$$key=$value;