1

在以下情况下,我无法理解大括号的目标,并且我找不到有关大括号使用的严肃文档。

请参见下面的示例:

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

 foreach($var as $item){

       ${$item} = array();

 }

我不明白${$item}意思。

我已经尝试过var_dumpforeach 循环之前和之后,但似乎没有任何反应。

有任何想法吗?

4

4 回答 4

11

它创建 4 个空数组:

$a, $b, $c, $d // arrays now
于 2011-07-27T09:48:10.687 回答
2

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

以下是查看代码中创建的变量差异的示例: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$); 


?>
于 2011-07-27T10:03:15.847 回答
0

是的,它确实创建了 4 个空数组,您正在运行时创建变量,这就是大括号的用法。这里是使用大括号的例子: php中的大括号

于 2011-07-27T10:07:57.683 回答
0

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

所以最终值将是 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();
于 2013-12-12T10:54:05.977 回答