${$item} 是什么意思?

What does ${$item} mean?

提问人:alesdario 提问时间:7/27/2011 最后编辑:mickmackusaalesdario 更新时间:4/28/2023 访问量:182

问:

在下面的情况下,我无法理解大括号的目标,也没有找到有关大括号使用的严肃文档。

请参阅以下示例:

 $var = array('a','b','c','d');

 foreach($var as $item){

       ${$item} = array();

 }

我不明白是什么意思。${$item}

我尝试过 foreach 循环之前和之后,但似乎什么也没发生。var_dump

有什么想法吗?

PHP 数组语法 大括号 变量

评论

3赞 Hannes 7/27/2011
看一看 php.net/manual/en/language.variables.variable.php

答:

11赞 Arthur Halma 7/27/2011 #1

它创建 4 个空数组:

$a, $b, $c, $d // arrays now

评论

0赞 alesdario 7/27/2011
哦,谢谢。让我问你一个问题。你认为这是一个好的做法吗?这似乎是“黑暗编程”
3赞 KingCrunch 7/27/2011
@alesdario:同时,它被视为“不良做法”,但在某些(次要)情况下,它可能会使事情变得更容易,或者类似。事实上,我从来没有用过它。
2赞 DhruvPathak 7/27/2011 #2

大括号创建一个与大括号内提供的字符串同名的变量。 在代码中,它通过从数组中获取字符串来创建 4 个新变量 $a,$b,$c,$d $var .

下面是一个示例,用于查看代码中创建的变量的差异:http://codepad.org/E2619ufe

<?php

$var = array('a','b','c','d');
$currentState = get_defined_vars();

foreach($var as $item){

       ${$item} = array();

 }

$newState =  get_defined_vars();
$newVariables = array_diff(array_keys($newState),array_keys($currentState));
var_dump($newVariables);

?>

以下是大括号的用法示例: http://codepad.org/KeE75iNP

<?php

${'myVar'} = 12345;
var_dump($myVar);

/* also helpful when the variable name contains $ due to some reason */

${'theCurrency$'} = 4000;
var_dump(${'theCurrency$'});

/* uncomment line below, it will raise syntax error */
//var_dump($theCurrency$); 


?>
0赞 iskandarm 7/27/2011 #3

是的,它创建了 4 个空数组,您正在运行时创建变量,这就是大括号的用法。以下是大括号的用法示例: PHP中的大括号

0赞 Rads 12/12/2013 #4

您放在大括号中的任何内容都将替换变量的值。

因此,最终值将是 4 个空数组

${item} will become $a, ie: $a = array();
${item} will become $b, ie: $b = array();
${item} will become $c, ie: $c = array();
${item} will become $d, ie: $d = array();