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つの空の配列を作成します。実行時に変数を作成しています。これは中括弧の使用です。ブレースの使用例を次に示します。

于 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 に答える