以下の状況ではブレースの目標を理解できず、ブレースの使用法に関する深刻なドキュメントは見つかりません。
以下の例を参照してください。
$var = array('a','b','c','d');
foreach($var as $item){
${$item} = array();
}
私は${$item}
意味を理解していません。
var_dump
foreach ループの前後で試してみましたが、何も起こらないようです。
何か案は?
4つの空の配列を作成します。
$a, $b, $c, $d // arrays now
中括弧は、中括弧内に提供される文字列と同じ名前の変数を作成します。コードでは、配列$ 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$);
?>
はい、正確に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();