Was bedeutet $$ (Dollar Dollar oder doppelter Dollar) in PHP?

116

Beispiel ist eine Variablendeklaration innerhalb einer Funktion:

global $$link;

Was heißt $$das

Schikane
quelle
50
es zeigt dir, wie viel $$$ du für die Wartung des Systems
bekommst
2
(verwandt) Was bedeutet dieses Symbol in PHP
Gordon
Es ist eine namenbasierte Referenzierung. So etwas wie ${$link}in Bash
Ondra Žižka
(verwandte) variable Variablen mit
PHPs Superglobal

Antworten:

181

Eine Syntax wie $$variableheißt Variable Variable .


Wenn Sie beispielsweise diesen Teil des Codes berücksichtigen:

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

Sie erhalten folgende Ausgabe:

test


Hier :

  • $real_variable enthält Test
  • $name enthält den Namen Ihrer Variablen: 'real_variable'
  • $$namebedeuten " die Variable, in der der Name enthalten ist$name "
    • Welches ist $real_variable
    • Und hat den Wert 'test'



BEARBEITEN nach @ Jhonnys Kommentar:

Ein $$$?
Der beste Weg, es zu wissen, ist es zu versuchen ;-)

Versuchen wir also diesen Teil des Codes:

$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 />';

Und hier ist die Ausgabe, die ich bekomme:

name
real_variable
test

Also würde ich sagen, ja, das kannst du$$$ ;-)

Pascal MARTIN
quelle
10
Ich stimme zwar zu, dass es nützlich sein kann, aber meistens ist es trotzdem besser, Arrays zu verwenden.
o0 '.
Ist das also dasselbe wie $ {$ value}?
Chaim
3
@Chaim: ja das ist es ;; außer dass in einigen Fällen die {und }erforderlich sind (es gibt ein Beispiel im Handbuch dazu)
Pascal MARTIN
23

Das innere $ löst die Variable a in eine Zeichenfolge auf, und das äußere $ löst eine Variable anhand dieser Zeichenfolge auf.

Betrachten Sie dieses Beispiel

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

Die Variable:

$$outer

würde gleich der Zeichenfolge "foo"

Reich
quelle
Obwohl die akzeptierte Antwort viel breiter ist (einschließlich Testfällen). Diese Erklärung machte es mir klarer
MariusJP
13

Es ist die Variable einer Variablen .

<?php
$a = 'hello';
$$a = 'world'; // now makes $hello a variable that holds 'world'
echo "$a ${$a}"; // "hello world"
echo "$a $hello"; // "hello world"
?>
Anthony Forloney
quelle
7

Es wird ein dynamischer Variablenname erstellt. Z.B

$link = 'foo';
$$link = 'bar';    // -> $foo = 'bar'
echo $foo;
// prints 'bar'

(auch als variable Variable bekannt )

Felix Kling
quelle
4

Ich möchte nicht nach anderen wiederholen, aber es besteht das Risiko, $$:)

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

Also benutze es mit dem Kopf. :) :)

hsz
quelle
1

Es wertet den Inhalt einer Variablen als den Namen einer anderen aus. Grundsätzlich erhalten Sie die Variable, in deren Namen gespeichert ist $link.

Zach
quelle
1

das hat bei mir funktioniert (in eckige Klammern setzen):

$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;
    }
Diego Santa Cruz Mendezú
quelle