php括号用法

时间:2011-07-27 09:45:42

标签: php arrays syntax braces

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

请参阅以下示例:

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

 foreach($var as $item){

       ${$item} = array();

 }

我不理解${$item}的含义。

我在foreach循环之前和之后尝试了var_dump,但似乎没有任何反应。

有什么想法吗?

4 个答案:

答案 0 :(得分:11)

它创建了4个空数组:

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

答案 1 :(得分: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$); 


?>

答案 2 :(得分:0)

是的,它确实创建了4个空数组,您在运行时创建变量,即使用大括号。以下是使用大括号的示例:braces in php

答案 3 :(得分: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();