PHPでの$$(ドルドルまたはダブルドル)の意味は?


116

例は関数内の変数宣言です:

global $$link;

どういう$$意味ですか?



50
これは、システムを維持するためにどれだけの$$$が得られるかを示しています;)
RCIX


これは名前ベースの逆参照です。${$link}バッシュのようなもの
OndraŽižka18年

回答:


181

などの構文$$variableは、Variable Variableと呼ばれます。


たとえば、コードのこの部分を検討すると、次のようになります。

$real_variable = 'test';
$name = 'real_variable';
echo $$name;

次の出力が表示されます。

test


ここに :

  • $real_variable テストが含まれています
  • $name 変数の名前が含まれています: 'real_variable'
  • $$name変数thasにその名前が含まれている$nameことを意味します
    • それは $real_variable
    • そして価値がある 'test'



@Jhonnyのコメントの後の編集:

やってる$$$
さて、知る最良の方法は;-)を試すことです

それでは、コードのこの部分を試してみましょう:

$real_variable = 'test';
$name = 'real_variable';
$name_of_name = 'name';

echo $name_of_name . '<br />';
echo $$name_of_name . '<br />';
echo $$$name_of_name . '<br />';

そして、これが私が得る出力です:

name
real_variable
test

だから、私はそう言うでしょう、はい、あなたはすることができます$$$ ;-)


10
私はそれが便利であることに同意しますが、ほとんどの場合、とにかく配列を使用する方が良いです。
o0 '。

これは$ {$ value}を実行することと同じですか?
Chaim 2010

3
@Chaim:はい、そうです;; ただし、場合によっては、{および}が必要です(これについてはマニュアルに例があります)
Pascal MARTIN

23

内側の$は変数を文字列に解決し、外側の$はその文字列によって変数を解決します。

したがって、この例を検討してください

$inner = "foo";
$outer = "inner";

変数:

$$outer

文字列「foo」に等しい


受け入れられたanwserははるかに広い(テストケースを含む)にもかかわらずです。この説明は私にとってより明確になりました
MariusJP 2018



4

私は他の人の後に繰り返したくありませんが、使用するリスクがあります$$:)

$a  = '1';
$$a =  2; // $1 = 2 :)

頭と一緒に使ってください。:)


1

ある変数の内容を別の変数の名前として評価します。基本的には、名前がに格納されている変数を提供します$link


1

これは私のために働きました(角括弧で囲みます):

$aInputsAlias = [
        'convocatoria'   => 'even_id',
        'plan'           => 'acev_id',
        'gasto_elegible' => 'nivel1',
        'rubro'          => 'nivel2',
        'grupo'          => 'nivel3',
    ];

    /* Manejo de los filtros */

    foreach(array_keys($aInputsAlias) as $field)
    {
        $key = $aInputsAlias[$field];

        ${$aInputsAlias[$field]} = $this->request->query($field) ? $this->request->query($field) : NULL;
    }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.