6

私は疑問に思っていました.中括弧のセマンティクスはPHP内で正確にどのように定義されていますか? たとえば、次のように定義したとします。

$a = "foo";

次に、次の違いは何ですか:

echo "${a}";

echo "{$a}";

つまり、中かっこ内ではなく中かっこの外側にドル記号を配置することで違いが生じる状況や、結果が常に同じである状況はありますか?

4

3 に答える 3

8

中括弧には多くの可能性 (省略など) があり、オブジェクトや配列を扱う場合はさらに複雑になります。

私は連結よりも補間を好み、不要な場合は中括弧を省略します。時々、そうです。

${}構文でオブジェクト演算子を使用することはできません。メソッドを呼び出すとき、または演算子を連鎖するときに使用する必要があります{$...}(メンバーを取得するための演算子が 1 つしかない場合は、中かっこを省略できます)。

構文は、${}可変変数に使用できます。

$y = 'x';
$x = 'hello';
echo "${$y}"; //hello

$$構文は文字列を補間しないため${}、補間が必要になります。文字列 ( ) を使用したり、ブロック${'y'}内で連結したりすることもできます。${}ただし、可変変数はおそらく悪いことと見なすことができます。

配列の場合、どちらでも機能し${foo['bar']}ます{$foo['bar']}$foo[bar]私はただ(補間の場合のみ-文字列の外側はbarそのコンテキストでは定数として扱われます)を好みます。

于 2012-07-10T22:04:38.580 に答える
4

角かっこは、変数名が終わる場所を区切ります。この例はそれ自体を物語っています。

$a = "hi!"

echo "$afoo";  //$afoo is undefined

echo "${a}foo";  //hi!foo

echo "{$a}foo";  //hi!foo

また、これは警告を吐き出すはずです。あなたが使用する必要があります

${'a'}

aそれ以外の場合は、定数であると想定しようとします。

于 2012-07-10T22:00:58.990 に答える