использование php брекетов - PullRequest
1 голос
/ 27 июля 2011

Я не могу понять цель скобок в ситуации ниже, и я не нахожу серьезных документов об использовании скобок.

См. Пример ниже:

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

 foreach($var as $item){

       ${$item} = array();

 }

Я не понимаю ${$item} значение.

Я пробовал с var_dump до и после цикла foreach, нокажется, ничего не происходит.

Есть идеи?

Ответы [ 4 ]

11 голосов
/ 27 июля 2011

Создает 4 пустых массива:

$a, $b, $c, $d // arrays now
2 голосов
/ 27 июля 2011

В фигурных скобках создается переменная с тем же именем, что и строка, указанная в фигурных скобках. В вашем коде он создает 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 голосов
/ 12 декабря 2013

Все, что вы положите в фигурную скобку, будет заменять значение переменной.

Таким образом, конечное значение будет 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();
0 голосов
/ 27 июля 2011

да, именно он создает 4 пустых массива, вы создаете переменные во время выполнения, то есть использование фигурных скобок.Вот примеры использования фигурных скобок: фигурные скобки в php

...